001: package com.completex.objective.components.persistency.core.adapter;
002:
003: import com.completex.objective.components.persistency.core.DatabasePolicy;
004: import com.completex.objective.components.persistency.core.PolicyAware;
005: import com.completex.objective.components.persistency.transact.impl.AbstractTransactionManager;
006: import com.completex.objective.components.persistency.transact.TransactionManager;
007: import com.completex.objective.components.persistency.transact.TransactionManagerFactory;
008: import com.completex.objective.components.log.Log;
009: import com.completex.objective.components.log.adapter.StdErrorLogAdapter;
010: import com.completex.objective.util.TypeUtil;
011:
012: import javax.sql.DataSource;
013:
014: /**
015: * @author Gennady Krizhevsky
016: */
017: public abstract class BaseTransactionManagerFactory implements
018: TransactionManagerFactory, PolicyAware {
019: protected static final Log DEFAULT_LOG = StdErrorLogAdapter
020: .newLogInstance();
021: protected DataSource dataSource;
022: protected DatabasePolicy databasePolicy;
023: private int stmtCacheSize;
024: private boolean useBatchModify;
025: private boolean checkForBadConnection;
026: protected Log logger;
027: protected CoreTransactionManagerFactory coreTmFactory = new CoreTransactionManagerFactory();
028:
029: public final TransactionManager newTransactionManager() {
030: validateInit();
031: AbstractTransactionManager coreTransactionManager = newCoreTransactionManager();
032: return newConcreteTransactionManager(coreTransactionManager);
033: }
034:
035: protected abstract TransactionManager newConcreteTransactionManager(
036: AbstractTransactionManager coreTransactionManager);
037:
038: protected void validateInit() {
039: TypeUtil.assertNotNull(dataSource, "Datasource");
040: TypeUtil.assertNotNull(databasePolicy, "DatabasePolicy");
041: }
042:
043: protected AbstractTransactionManager newCoreTransactionManager() {
044: coreTmFactory.setDatabasePolicy(databasePolicy);
045: coreTmFactory.setDataSource(dataSource);
046: coreTmFactory.setCheckForBadConnection(checkForBadConnection);
047: coreTmFactory.setLogger(logger);
048: coreTmFactory.setStmtCacheSize(stmtCacheSize);
049: return coreTmFactory.newTransactionManager();
050: }
051:
052: public DatabasePolicy getDatabasePolicy() {
053: return databasePolicy;
054: }
055:
056: public void setDatabasePolicy(DatabasePolicy databasePolicy) {
057: this .databasePolicy = databasePolicy;
058: }
059:
060: public int getStmtCacheSize() {
061: return stmtCacheSize;
062: }
063:
064: public void setStmtCacheSize(int stmtCacheSize) {
065: this .stmtCacheSize = stmtCacheSize;
066: }
067:
068: public Log getLogger() {
069: return DefaultDataSourceFactory.resolveLogger(logger);
070: }
071:
072: public void setLogger(Log logger) {
073: this .logger = DefaultDataSourceFactory.resolveLogger(logger);
074: }
075:
076: public DataSource getDataSource() {
077: return dataSource;
078: }
079:
080: public void setDataSource(DataSource dataSource) {
081: this .dataSource = dataSource;
082: }
083:
084: public boolean isUseBatchModify() {
085: return useBatchModify;
086: }
087:
088: public void setUseBatchModify(boolean useBatchModify) {
089: this .useBatchModify = useBatchModify;
090: }
091:
092: public boolean isCheckForBadConnection() {
093: return checkForBadConnection;
094: }
095:
096: public void setCheckForBadConnection(boolean checkForBadConnection) {
097: this.checkForBadConnection = checkForBadConnection;
098: }
099:
100: }
|