1 package jp.sourceforge.ea2ddl.dao.allcommon;
\r
3 import javax.sql.DataSource;
\r
5 import org.seasar.dbflute.DBDef;
\r
6 import org.seasar.dbflute.bhv.core.BehaviorCommandInvoker;
\r
7 import org.seasar.dbflute.bhv.core.InvokerAssistant;
\r
8 import org.seasar.dbflute.cbean.sqlclause.SqlClauseCreator;
\r
9 import org.seasar.dbflute.dbmeta.DBMetaProvider;
\r
10 import org.seasar.dbflute.jdbc.DataSourceHandler;
\r
11 import org.seasar.dbflute.jdbc.DataSourceWrapper;
\r
12 import org.seasar.dbflute.jdbc.StatementFactory;
\r
13 import org.seasar.dbflute.resource.ResourceParameter;
\r
14 import org.seasar.extension.jdbc.types.ValueTypes;
\r
15 import org.seasar.dbflute.s2dao.beans.factory.TnBeanDescFactory;
\r
16 import org.seasar.dbflute.s2dao.extension.TnBeanMetaDataFactoryExtension;
\r
17 import org.seasar.dbflute.s2dao.jdbc.TnStatementFactoryImpl;
\r
18 import org.seasar.dbflute.s2dao.metadata.TnBeanMetaDataFactory;
\r
19 import org.seasar.dbflute.s2dao.valuetype.TnValueTypeFactory;
\r
20 import org.seasar.dbflute.s2dao.valuetype.impl.TnValueTypeFactoryImpl;
\r
22 import org.seasar.framework.util.Disposable;
\r
23 import org.seasar.framework.util.DisposableUtil;
\r
26 * @author DBFlute(AutoGenerator)
\r
28 public class ImplementedInvokerAssistant implements InvokerAssistant {
\r
30 // ===================================================================================
\r
33 protected BehaviorCommandInvoker _behaviorCommandInvoker;
\r
34 protected DataSource _dataSource;
\r
35 protected DBMetaProvider _dbmetaProvider;
\r
36 protected SqlClauseCreator _sqlClauseCreator;
\r
37 protected StatementFactory _statementFactory;
\r
38 protected TnBeanMetaDataFactory _beanMetaDataFactory;
\r
39 protected TnValueTypeFactory _valueTypeFactory;
\r
41 protected boolean _disposable;
\r
43 // ===================================================================================
\r
44 // Assistant Main Work
\r
45 // ===================
\r
46 public DBDef assistCurrentDBDef() {
\r
47 return DBCurrent.getInstance().currentDBDef();
\r
50 public DataSource assistDataSource() {
\r
51 DataSourceHandler dataSourceHandler = DBFluteConfig.getInstance().getDataSourceHandler();
\r
52 if (dataSourceHandler != null) {
\r
53 return new DataSourceWrapper(_dataSource, dataSourceHandler);
\r
58 public DBMetaProvider assistDBMetaProvider() {
\r
59 if (_dbmetaProvider != null) {
\r
60 return _dbmetaProvider;
\r
62 _dbmetaProvider = createDBMetaProvider();
\r
63 return _dbmetaProvider;
\r
66 protected DBMetaProvider createDBMetaProvider() {
\r
67 return new DBMetaInstanceHandler();
\r
70 public SqlClauseCreator assistSqlClauseCreator() {
\r
71 if (_sqlClauseCreator != null) {
\r
72 return _sqlClauseCreator;
\r
74 _sqlClauseCreator = createSqlClauseCreator();
\r
75 return _sqlClauseCreator;
\r
78 protected SqlClauseCreator createSqlClauseCreator() {
\r
79 return new ImplementedSqlClauseCreator();
\r
82 public StatementFactory assistStatementFactory() {
\r
83 if (_statementFactory != null) {
\r
84 return _statementFactory;
\r
86 _statementFactory = createStatementFactory();
\r
87 return _statementFactory;
\r
90 protected StatementFactory createStatementFactory() {
\r
91 final TnStatementFactoryImpl factory = new TnStatementFactoryImpl();
\r
92 factory.setDefaultStatementConfig(DBFluteConfig.getInstance().getDefaultStatementConfig());
\r
93 factory.setInternalDebug(DBFluteConfig.getInstance().isInternalDebug());
\r
97 public TnBeanMetaDataFactory assistBeanMetaDataFactory() {
\r
98 if (_beanMetaDataFactory != null) {
\r
99 return _beanMetaDataFactory;
\r
101 _beanMetaDataFactory = createBeanMetaDataFactory();
\r
102 return _beanMetaDataFactory;
\r
105 protected TnBeanMetaDataFactory createBeanMetaDataFactory() {
\r
106 final TnBeanMetaDataFactoryExtension factory = new TnBeanMetaDataFactoryExtension();
\r
107 factory.setDataSource(_dataSource);
\r
108 factory.setValueTypeFactory(assistValueTypeFactory());
\r
112 public TnValueTypeFactory assistValueTypeFactory() {
\r
113 if (_valueTypeFactory != null) {
\r
114 return _valueTypeFactory;
\r
116 _valueTypeFactory = createValueTypeFactory();
\r
117 return _valueTypeFactory;
\r
120 protected TnValueTypeFactory createValueTypeFactory() {
\r
121 return new TnValueTypeFactoryImpl();
\r
124 public ResourceParameter assistResourceParameter() {
\r
125 ResourceParameter resourceParameter = new ResourceParameter();
\r
126 resourceParameter.setOutsideSqlPackage(DBFluteConfig.getInstance().getOutsideSqlPackage());
\r
127 resourceParameter.setLogDateFormat(DBFluteConfig.getInstance().getLogDateFormat());
\r
128 resourceParameter.setLogTimestampFormat(DBFluteConfig.getInstance().getLogTimestampFormat());
\r
129 return resourceParameter;
\r
132 public String assistSqlFileEncoding() {
\r
136 // ===================================================================================
\r
139 public void toBeDisposable() { // for HotDeploy
\r
140 if (!_disposable) {
\r
141 synchronized (this) {
\r
142 if (!_disposable) {
\r
143 // Register for BehaviorCommandInvoker
\r
144 DisposableUtil.add(new Disposable() {
\r
145 public void dispose() {
\r
146 if (_behaviorCommandInvoker != null) {
\r
147 _behaviorCommandInvoker.clearExecutionCache();
\r
149 _disposable = false;
\r
152 // Register for BeanDescFactory
\r
153 DisposableUtil.add(new Disposable() {
\r
154 public void dispose() {
\r
155 TnBeanDescFactory.clear();
\r
158 // Register for ValueTypes
\r
159 DisposableUtil.add(new Disposable() {
\r
160 public void dispose() {
\r
161 ValueTypes.clear();
\r
164 _disposable = true;
\r
170 public boolean isDisposable() {
\r
171 return _disposable;
\r
174 // ===================================================================================
\r
177 protected void assertBehaviorCommandInvoker() {
\r
178 if (_behaviorCommandInvoker == null) {
\r
179 String msg = "The attribute 'behaviorCommandInvoker' should not be null!";
\r
180 throw new IllegalStateException(msg);
\r
184 // ===================================================================================
\r
187 public void setBehaviorCommandInvoker(BehaviorCommandInvoker behaviorCommandInvoker) {
\r
188 _behaviorCommandInvoker = behaviorCommandInvoker;
\r
191 public void setDataSource(DataSource dataSource) {
\r
192 _dataSource = dataSource;
\r