OSDN Git Service

b4276c362f2361023538ba8bb37113a1abe45f0c
[ea2ddl/ea2ddl.git] / ea2ddl-gen / dbflute / templates / om / java / allcommon / s2dao / internal / sqlcommand / InternalUpdateModifiedOnlyCommand.vm
1 ${database.allClassCopyright}package ${glPackageBaseCommonS2DaoInternalSqlCommand};\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 import java.util.Set;\r
6 \r
7 import javax.sql.DataSource;\r
8 \r
9 import org.seasar.dao.BeanMetaData;\r
10 import org.seasar.extension.jdbc.PropertyType;\r
11 import org.seasar.extension.jdbc.StatementFactory;\r
12 \r
13 /**\r
14  * @author ${database.ClassAuthor}\r
15  */\r
16 public class ${glInternalUpdateModifiedOnlyCommand} extends ${glInternalUpdateAutoDynamicCommand} {\r
17 \r
18         // ===================================================================================\r
19     //                                                                         Constructor\r
20     //                                                                         ===========\r
21     public ${glInternalUpdateModifiedOnlyCommand}(DataSource dataSource, StatementFactory statementFactory) {\r
22         super(dataSource, statementFactory);\r
23     }\r
24 \r
25         // ===================================================================================\r
26     //                                                                 No.1 Point Override\r
27     //                                                                 ===================\r
28     @Override\r
29     protected PropertyType[] createUpdatePropertyTypes(final BeanMetaData bmd, final Object bean, final String[] propertyNames) {\r
30         final Set<?> modifiedPropertyNames = getBeanMetaData().getModifiedPropertyNames(bean);\r
31         final List<PropertyType> types = new ArrayList<PropertyType>();\r
32         final String timestampPropertyName = bmd.getTimestampPropertyName();\r
33         final String versionNoPropertyName = bmd.getVersionNoPropertyName();\r
34         for (int i = 0; i < propertyNames.length; ++i) {\r
35             final PropertyType pt = bmd.getPropertyType(propertyNames[i]);\r
36             if (pt.isPrimaryKey() == false) {\r
37                 final String propertyName = pt.getPropertyName();\r
38                 if (propertyName.equalsIgnoreCase(timestampPropertyName)\r
39                         || propertyName.equalsIgnoreCase(versionNoPropertyName)\r
40                         || modifiedPropertyNames.contains(propertyName)) {\r
41                     types.add(pt);\r
42                 }\r
43             }\r
44         }\r
45         final PropertyType[] propertyTypes = (PropertyType[]) types.toArray(new PropertyType[types.size()]);\r
46         return propertyTypes;\r
47     }\r
48 }\r