1 21 22 package org.opensubsystems.core.persist.db.connectionpool; 23 24 import java.sql.Connection ; 25 import java.util.HashMap ; 26 import java.util.Map ; 27 import java.util.logging.Logger ; 28 29 import org.opensubsystems.core.util.Log; 30 import org.opensubsystems.core.util.SetupReader; 31 32 52 public class PooledDatabaseConnectionFactorySetupReader extends SetupReader 53 { 54 57 59 62 public static final String DATABASE_POOL_BASE_PATH = "oss.datasource.pool"; 63 64 66 76 public static final String DBPOOL_INITIAL_SIZE = "initialsize"; 77 78 89 public static final String DBPOOL_MIN_SIZE = "minsize"; 90 91 101 public static final String DBPOOL_MAX_SIZE = "maxsize"; 102 103 116 public static final String DBPOOL_CAN_GROW = "cangrow"; 117 118 128 public static final String DBPOOL_WAIT_PERIOD = "waitperiod"; 129 130 142 public static final String DBPOOL_RETRY_PERIOD = "retryperiod"; 143 144 155 public static final String DBPOOL_RETRY_COUNT = "retrycount"; 156 157 168 public static final String DBPOOL_VALIDATE_BORROW = "validate.borrow"; 169 170 179 public static final String DBPOOL_VALIDATE_RETURN = "validate.return"; 180 181 192 public static final String DBPOOL_VALIDATE_IDLE = "validate.idle"; 193 194 212 public static final String DBPOOL_CHECK_LEVEL = "validate.level"; 213 214 228 public static final String DBPOOL_IDLE_CHECK_PERIOD = "idlecheckperiod"; 229 230 240 public static final String DBPOOL_IDLE_CHECK_SIZE = "idlechecksize"; 241 242 253 public static final String DBPOOL_IDLE_PERIOD = "idleperiod"; 254 255 265 public static final String DBPOOL_TRANSACTION_ISOLATION = "transaction.isolation"; 266 267 278 public static final String DBPOOL_PREPSTATEMENT_CACHE_SIZE = "pstmtcachesize"; 279 280 282 287 public static final int DBPOOL_INITIAL_SIZE_DEFAULT = 0; 288 289 294 public static final int DBPOOL_MIN_SIZE_DEFAULT = 0; 295 296 300 public static final int DBPOOL_MAX_SIZE_DEFAULT = 20; 301 302 305 public static final boolean DBPOOL_CAN_GROW_DEFAULT = true; 306 307 311 public static final long DBPOOL_WAIT_PERIOD_DEFAULT = 10000L; 313 319 public static final long DBPOOL_RETRY_PERIOD_DEFAULT = 2000L; 321 326 public static final long DBPOOL_RETRY_COUNT_DEFAULT = 3; 328 333 public static final boolean DBPOOL_VALIDATE_BORROW_DEFAULT = false; 335 338 public static final boolean DBPOOL_VALIDATE_RETURN_DEFAULT = false; 340 345 public static final boolean DBPOOL_VALIDATE_IDLE_DEFAULT = false; 347 359 public static final int DBPOOL_CHECK_LEVEL_DEFAULT = 0; 361 368 public static final long DBPOOL_IDLE_CHECK_PERIOD_DEFAULT = 0; 370 373 public static final int DBPOOL_IDLE_CHECK_SIZE_DEFAULT = 0; 375 380 public static final long DBPOOL_IDLE_PERIOD_DEFAULT = 0; 382 386 public static final String DBPOOL_TRANSACTION_ISOLATION_DEFAULT = "serializable"; 387 388 395 public static final int DBPOOL_PREPSTATEMENT_CACHE_SIZE_DEFAULT = -1; 397 399 402 private static Logger s_logger 403 = Log.getInstance(PooledDatabaseConnectionFactorySetupReader.class); 404 405 409 protected static Map s_registeredParametersTypes; 410 411 415 protected static Map s_registeredParametersDefaults; 416 417 419 422 static 423 { 424 s_registeredParametersTypes = new HashMap (); 425 s_registeredParametersDefaults = new HashMap (); 426 } 427 428 437 public PooledDatabaseConnectionFactorySetupReader( 438 String readerName 439 ) 440 { 441 super(DATABASE_POOL_BASE_PATH, readerName); 442 } 443 444 446 449 protected void registerParameters( 450 ) 451 { 452 registerParameter(DBPOOL_INITIAL_SIZE, 453 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 454 Integer.toString(DBPOOL_INITIAL_SIZE_DEFAULT)); 455 456 registerParameter(DBPOOL_MIN_SIZE, 457 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 458 Integer.toString(DBPOOL_MIN_SIZE_DEFAULT)); 459 460 registerParameter(DBPOOL_MAX_SIZE, 461 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 462 Integer.toString(DBPOOL_MAX_SIZE_DEFAULT)); 463 464 registerParameter(DBPOOL_CAN_GROW, 465 SetupReader.PARAMETER_TYPE_BOOLEAN_OBJ, 466 Boolean.toString(DBPOOL_CAN_GROW_DEFAULT)); 467 468 registerParameter(DBPOOL_WAIT_PERIOD, 469 SetupReader.PARAMETER_TYPE_LONG_OBJ, 470 Long.toString(DBPOOL_WAIT_PERIOD_DEFAULT)); 471 472 registerParameter(DBPOOL_RETRY_PERIOD, 473 SetupReader.PARAMETER_TYPE_LONG_OBJ, 474 Long.toString(DBPOOL_RETRY_PERIOD_DEFAULT)); 475 476 registerParameter(DBPOOL_RETRY_COUNT, 477 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 478 Long.toString(DBPOOL_RETRY_COUNT_DEFAULT)); 479 480 registerParameter(DBPOOL_VALIDATE_BORROW, 481 SetupReader.PARAMETER_TYPE_BOOLEAN_OBJ, 482 Boolean.toString(DBPOOL_VALIDATE_BORROW_DEFAULT)); 483 484 registerParameter(DBPOOL_VALIDATE_RETURN, 485 SetupReader.PARAMETER_TYPE_BOOLEAN_OBJ, 486 Boolean.toString(DBPOOL_VALIDATE_RETURN_DEFAULT)); 487 488 registerParameter(DBPOOL_VALIDATE_IDLE, 489 SetupReader.PARAMETER_TYPE_BOOLEAN_OBJ, 490 Boolean.toString(DBPOOL_VALIDATE_IDLE_DEFAULT)); 491 492 registerParameter(DBPOOL_CHECK_LEVEL, 493 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 494 Integer.toString(DBPOOL_CHECK_LEVEL_DEFAULT)); 495 496 registerParameter(DBPOOL_IDLE_CHECK_PERIOD, 497 SetupReader.PARAMETER_TYPE_LONG_OBJ, 498 Long.toString(DBPOOL_IDLE_CHECK_PERIOD_DEFAULT)); 499 500 registerParameter(DBPOOL_IDLE_CHECK_SIZE, 501 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 502 Integer.toString(DBPOOL_IDLE_CHECK_SIZE_DEFAULT)); 503 504 registerParameter(DBPOOL_IDLE_PERIOD, 505 SetupReader.PARAMETER_TYPE_LONG_OBJ, 506 Long.toString(DBPOOL_IDLE_PERIOD_DEFAULT)); 507 508 registerParameter(DBPOOL_TRANSACTION_ISOLATION, 509 SetupReader.PARAMETER_TYPE_STRING_OBJ, 510 DBPOOL_TRANSACTION_ISOLATION_DEFAULT); 511 512 registerParameter(DBPOOL_PREPSTATEMENT_CACHE_SIZE, 513 SetupReader.PARAMETER_TYPE_INTEGER_OBJ, 514 Integer.toString(DBPOOL_PREPSTATEMENT_CACHE_SIZE_DEFAULT)); 515 } 516 517 520 protected Map getRegisteredParameterTypes() 521 { 522 return s_registeredParametersTypes; 523 } 524 525 528 protected Map getRegisteredParametersDefaults() 529 { 530 return s_registeredParametersDefaults; 531 } 532 533 539 public static int convertTransactionIsolationToConstant( 540 String strTransactionIsolation 541 ) 542 { 543 int iTransactionIsolation = Connection.TRANSACTION_SERIALIZABLE; 545 546 if ("uncommited".equalsIgnoreCase(strTransactionIsolation)) 547 { 548 iTransactionIsolation = Connection.TRANSACTION_READ_UNCOMMITTED; 549 } 550 else if ("commited".equalsIgnoreCase(strTransactionIsolation)) 551 { 552 iTransactionIsolation = Connection.TRANSACTION_READ_COMMITTED; 553 } 554 else if ("repeatable".equalsIgnoreCase(strTransactionIsolation)) 555 { 556 iTransactionIsolation = Connection.TRANSACTION_REPEATABLE_READ; 557 } 558 else if ("serializable".equalsIgnoreCase(strTransactionIsolation)) 559 { 560 iTransactionIsolation = Connection.TRANSACTION_SERIALIZABLE; 561 } 562 else 563 { 564 s_logger.config("Incorrect transaction isolation setting " 565 + strTransactionIsolation 566 + ". Using default serializable."); 567 } 568 569 return iTransactionIsolation; 570 } 571 } 572 | Popular Tags |