OSDN Git Service

DBFlute-0.9.3に更新
[ea2ddl/ea2ddl.git] / ea2ddl-dao / src / main / java / jp / sourceforge / ea2ddl / dao / allcommon / s2dao / internal / sqlcommand / InternalUpdateModifiedOnlyCommand.java
1 package jp.sourceforge.ea2ddl.dao.allcommon.s2dao.internal.sqlcommand;\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 DBFlute(AutoGenerator)\r
15  */\r
16 public class InternalUpdateModifiedOnlyCommand extends InternalUpdateAutoDynamicCommand {\r
17 \r
18         // ===================================================================================\r
19     //                                                                         Constructor\r
20     //                                                                         ===========\r
21     public InternalUpdateModifiedOnlyCommand(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