OSDN Git Service

DBFlute-0.9.3に更新
[ea2ddl/ea2ddl.git] / ea2ddl-dao / src / main / java / jp / sourceforge / ea2ddl / dao / allcommon / ImplementedInvokerAssistant.java
1 package jp.sourceforge.ea2ddl.dao.allcommon;\r
2 \r
3 import javax.sql.DataSource;\r
4 \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
21 \r
22 import org.seasar.framework.util.Disposable;\r
23 import org.seasar.framework.util.DisposableUtil;\r
24 \r
25 /**\r
26  * @author DBFlute(AutoGenerator)\r
27  */\r
28 public class ImplementedInvokerAssistant implements InvokerAssistant {\r
29 \r
30     // ===================================================================================\r
31     //                                                                           Attribute\r
32     //                                                                           =========\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
40     \r
41     protected boolean _disposable;\r
42 \r
43     // ===================================================================================\r
44     //                                                                 Assistant Main Work\r
45     //                                                                 ===================\r
46     public DBDef assistCurrentDBDef() {\r
47         return DBCurrent.getInstance().currentDBDef();\r
48     }\r
49 \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
54         }\r
55         return _dataSource;\r
56     }\r
57 \r
58     public DBMetaProvider assistDBMetaProvider() {\r
59         if (_dbmetaProvider != null) {\r
60             return _dbmetaProvider;\r
61         }\r
62         _dbmetaProvider = createDBMetaProvider();\r
63         return _dbmetaProvider;\r
64     }\r
65 \r
66     protected DBMetaProvider createDBMetaProvider() {\r
67         return new DBMetaInstanceHandler();\r
68     }\r
69 \r
70     public SqlClauseCreator assistSqlClauseCreator() {\r
71         if (_sqlClauseCreator != null) {\r
72             return _sqlClauseCreator;\r
73         }\r
74         _sqlClauseCreator = createSqlClauseCreator();\r
75         return _sqlClauseCreator;\r
76     }\r
77 \r
78     protected SqlClauseCreator createSqlClauseCreator() {\r
79         return new ImplementedSqlClauseCreator();\r
80     }\r
81 \r
82     public StatementFactory assistStatementFactory() {\r
83         if (_statementFactory != null) {\r
84             return _statementFactory;\r
85         }\r
86         _statementFactory = createStatementFactory();\r
87         return _statementFactory;\r
88     }\r
89 \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
94         return factory;\r
95     }\r
96 \r
97     public TnBeanMetaDataFactory assistBeanMetaDataFactory() {\r
98         if (_beanMetaDataFactory != null) {\r
99             return _beanMetaDataFactory;\r
100         }\r
101         _beanMetaDataFactory = createBeanMetaDataFactory();\r
102         return _beanMetaDataFactory;\r
103     }\r
104 \r
105     protected TnBeanMetaDataFactory createBeanMetaDataFactory() {\r
106         final TnBeanMetaDataFactoryExtension factory = new TnBeanMetaDataFactoryExtension();\r
107         factory.setDataSource(_dataSource);\r
108         factory.setValueTypeFactory(assistValueTypeFactory());\r
109         return factory;\r
110     }\r
111     \r
112     public TnValueTypeFactory assistValueTypeFactory() {\r
113         if (_valueTypeFactory != null) {\r
114             return _valueTypeFactory;\r
115         }\r
116         _valueTypeFactory = createValueTypeFactory();\r
117         return _valueTypeFactory;\r
118     }\r
119 \r
120     protected TnValueTypeFactory createValueTypeFactory() {\r
121         return new TnValueTypeFactoryImpl();\r
122     }\r
123 \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
130     }\r
131 \r
132     public String assistSqlFileEncoding() {\r
133         return "UTF-8";\r
134     }\r
135 \r
136     // ===================================================================================\r
137     //                                                                             Dispose\r
138     //                                                                             =======\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
148                             }\r
149                             _disposable = false;\r
150                         }\r
151                     });\r
152                     // Register for BeanDescFactory\r
153                     DisposableUtil.add(new Disposable() {\r
154                         public void dispose() {\r
155                             TnBeanDescFactory.clear();\r
156                         }\r
157                     });\r
158                     // Register for ValueTypes\r
159                     DisposableUtil.add(new Disposable() {\r
160                         public void dispose() {\r
161                             ValueTypes.clear();\r
162                         }\r
163                     });\r
164                     _disposable = true;\r
165                 }\r
166             }\r
167         }\r
168     }\r
169 \r
170     public boolean isDisposable() {\r
171         return _disposable;\r
172     }\r
173 \r
174     // ===================================================================================\r
175     //                                                                       Assert Helper\r
176     //                                                                       =============\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
181         }\r
182     }\r
183 \r
184     // ===================================================================================\r
185     //                                                                            Accessor\r
186     //                                                                            ========\r
187     public void setBehaviorCommandInvoker(BehaviorCommandInvoker behaviorCommandInvoker) {\r
188         _behaviorCommandInvoker = behaviorCommandInvoker;\r
189     }\r
190 \r
191     public void setDataSource(DataSource dataSource) {\r
192         _dataSource = dataSource;\r
193     }\r
194 }\r