OSDN Git Service

"https://svn.sourceforge.jp/svnroot/ea2ddl" にプロジェクト "ea2ddl-dao" を共用
[ea2ddl/ea2ddl.git] / ea2ddl-dao / src / main / java / jp / sourceforge / ea2ddl / dao / allcommon / s2dao / internal / rshandler / InternalAbstractBeanMetaDataResultSetHandler.java
1 package jp.sourceforge.ea2ddl.dao.allcommon.s2dao.internal.rshandler;\r
2 \r
3 import java.sql.ResultSet;\r
4 import java.sql.SQLException;\r
5 import java.util.Map;\r
6 import java.util.Set;\r
7 \r
8 import org.seasar.dao.BeanMetaData;\r
9 import org.seasar.dao.RelationPropertyType;\r
10 import org.seasar.dao.RelationRowCreator;\r
11 import org.seasar.dao.RowCreator;\r
12 \r
13 import jp.sourceforge.ea2ddl.dao.allcommon.Entity;\r
14 \r
15 /**\r
16  * @author DBFlute(AutoGenerator)\r
17  */\r
18 @SuppressWarnings("unchecked")\r
19 public abstract class InternalAbstractBeanMetaDataResultSetHandler extends InternalAbstractDtoMetaDataResultSetHandler {\r
20 \r
21         // ===================================================================================\r
22     //                                                                           Attribute\r
23     //                                                                           =========\r
24     private BeanMetaData beanMetaData;\r
25     protected RelationRowCreator relationRowCreator;\r
26 \r
27         // ===================================================================================\r
28     //                                                                         Constructor\r
29     //                                                                         ===========\r
30     /**\r
31      * @param beanMetaData Bean meta data. (NotNull)\r
32      * @param rowCreator Row creator. (NotNull)\r
33      * @param relationRowCreator Relation row creator. (NotNul)\r
34      */\r
35     public InternalAbstractBeanMetaDataResultSetHandler(BeanMetaData beanMetaData, RowCreator rowCreator, RelationRowCreator relationRowCreator) {\r
36         super(beanMetaData, rowCreator);\r
37         this.beanMetaData = beanMetaData;\r
38         this.relationRowCreator = relationRowCreator;\r
39     }\r
40 \r
41         // ===================================================================================\r
42     //                                                                       Assist Helper\r
43     //                                                                       =============\r
44     /**\r
45      * @param columnNames The set of column name. (NotNull)\r
46      * @return The map of row property cache. Map{String(columnName), PropertyType} (NotNull)\r
47      * @throws SQLException\r
48      */\r
49     protected Map createPropertyCache(Set columnNames) throws SQLException {\r
50         // - - - - - - - - -\r
51         // Override for Bean\r
52         // - - - - - - - - -\r
53         return rowCreator.createPropertyCache(columnNames, beanMetaData);\r
54     }\r
55 \r
56     /**\r
57      * @param rs Result set. (NotNull)\r
58      * @param propertyCache The map of property cache. Map{String(columnName), PropertyType} (NotNull)\r
59      * @return Created row. (NotNull)\r
60      * @throws SQLException\r
61      */\r
62     protected Object createRow(ResultSet rs, Map propertyCache) throws SQLException {\r
63         // - - - - - - - - -\r
64         // Override for Bean\r
65         // - - - - - - - - -\r
66         final Class beanClass = beanMetaData.getBeanClass();\r
67         return rowCreator.createRow(rs, propertyCache, beanClass);\r
68     }\r
69 \r
70     /**\r
71      * @param columnNames The set of column name. (NotNull)\r
72      * @return The map of relation property cache. Map{String(relationNoSuffix), Map{String(columnName), PropertyType}} (NotNull)\r
73      * @throws SQLException\r
74      */\r
75     protected Map createRelationPropertyCache(Set columnNames) throws SQLException {\r
76         return relationRowCreator.createPropertyCache(columnNames, beanMetaData);\r
77     }\r
78 \r
79     /**\r
80      * @param rs Result set. (NotNull)\r
81      * @param rpt The type of relation property. (NotNull)\r
82      * @param columnNames The set of column name. (NotNull)\r
83      * @param relKeyValues The map of rel key values. (Nullable)\r
84      * @param relationPropertyCache The map of relation property cache. Map{String(relationNoSuffix), Map{String(columnName), PropertyType}} (NotNull)\r
85      * @return Created relation row. (Nullable)\r
86      * @throws SQLException\r
87      */\r
88     protected Object createRelationRow(ResultSet rs, RelationPropertyType rpt,\r
89             Set columnNames, Map relKeyValues, Map relationPropertyCache) throws SQLException {\r
90         return relationRowCreator.createRelationRow(rs, rpt, columnNames, relKeyValues, relationPropertyCache);\r
91     }\r
92 \r
93     /**\r
94      * @param row The row of result list. (NotNull)\r
95      */\r
96     protected void postCreateRow(final Object row) {\r
97         if (row instanceof Entity) { // DBFlute Target\r
98             ((Entity)row).clearModifiedPropertyNames();\r
99         } else { // Basically Unreachable\r
100             final BeanMetaData bmd = getBeanMetaData();\r
101             final Set names = bmd.getModifiedPropertyNames(row);\r
102             names.clear();\r
103         }\r
104     }\r
105 \r
106         // ===================================================================================\r
107     //                                                                            Accessor\r
108     //                                                                            ========\r
109     public BeanMetaData getBeanMetaData() {\r
110         return beanMetaData;\r
111     }\r
112 }\r