1 ${database.allClassCopyright}package ${myDBMetaPackageName};
\r
2 #set ($myClassName = "${myDBMetaClassName}")
\r
4 import java.util.List;
\r
5 import java.util.Map;
\r
7 import ${glPackageBaseCommon}.${glEntityInterfaceName};
\r
8 import ${glPackageBaseCommonDBMeta}.${glDBMetaAbstractName};
\r
9 import ${myExtendedEntityPackageName}.${myExtendedObjectClassName};
\r
10 import ${glPackageBaseCommonDBMetaInfo}.*;
\r
13 * The DB meta of ${table.Name}. (Singleton)
\r
14 * @author ${database.ClassAuthor}
\r
15 */${database.outputSuppressWarningsAfterLineSeparator()}
\r
16 public class ${myClassName} extends ${glDBMetaAbstractName} {
\r
18 private static final ${myClassName} _instance = new ${myClassName}();
\r
19 private ${myClassName}() {}
\r
20 public static ${myClassName} getInstance() { return _instance; }
\r
22 // ===================================================================================
\r
25 public String getTableDbName() { return "$table.name"; }
\r
26 public String getTablePropertyName() { return "$table.javaBeansRulePropertyName"; }
\r
27 public String getTableSqlName() { return "$table.tableSqlName"; }
\r
29 // ===================================================================================
\r
32 #foreach ($col in $table.columns)
\r
33 #if ($col.isVersionNo())
\r
34 protected ${glColumnInfoName} _column${col.javaBeansRulePropertyNameInitCap} = cci("${col.name}", "${col.javaBeansRulePropertyName}", ${col.javaNative}.class, ${col.isPrimaryKey()}, ${col.columnSizeSettingExpression}, ${col.columnDecimalDigitsSettingExpression}, OptimisticLockType.VERSION_NO);
\r
35 #elseif ($col.isUpdateDate())
\r
36 protected ${glColumnInfoName} _column${col.javaBeansRulePropertyNameInitCap} = cci("${col.name}", "${col.javaBeansRulePropertyName}", ${col.javaNative}.class, ${col.isPrimaryKey()}, ${col.columnSizeSettingExpression}, ${col.columnDecimalDigitsSettingExpression}, OptimisticLockType.UPDATE_DATE);
\r
38 protected ${glColumnInfoName} _column${col.javaBeansRulePropertyNameInitCap} = cci("${col.name}", "${col.javaBeansRulePropertyName}", ${col.javaNative}.class, ${col.isPrimaryKey()}, ${col.columnSizeSettingExpression}, ${col.columnDecimalDigitsSettingExpression});
\r
42 #foreach ($col in $table.columns)
\r
43 public ${glColumnInfoName} column${col.javaBeansRulePropertyNameInitCap}() { return _column${col.javaBeansRulePropertyNameInitCap}; }
\r
45 { initializeColumnInfoList(); }
\r
46 #if ($database.isMakeDBMetaStaticDefinition())
\r
48 // ===================================================================================
\r
51 // -----------------------------------------------------
\r
54 public static final String TABLE_DB_NAME = "$table.name";
\r
55 public static final String TABLE_PROPERTY_NAME = "$table.javaBeansRulePropertyName";
\r
57 // -----------------------------------------------------
\r
60 #foreach ($col in $table.columns)
\r
61 public static final String DB_NAME_${col.name} = "$col.name";
\r
64 // -----------------------------------------------------
\r
65 // Column Property Name
\r
67 // --------------------
\r
68 #foreach ($col in $table.columns)
\r
69 public static final String PROPERTY_NAME_${col.javaBeansRulePropertyName} = "$col.javaBeansRulePropertyName";
\r
73 // ===================================================================================
\r
76 public Map<String, String> getDbNamePropertyNameKeyToLowerMap() { return createDbNamePropertyNameKeyToLowerMap(); }
\r
77 public Map<String, String> getPropertyNameDbNameKeyToLowerMap() { return createPropertyNameDbNameKeyToLowerMap(); }
\r
78 protected static Map<String, String> _dbNamePropertyNameKeyToLowerMap;
\r
79 protected Map<String, String> createDbNamePropertyNameKeyToLowerMap() {
\r
80 if (_dbNamePropertyNameKeyToLowerMap == null) { _dbNamePropertyNameKeyToLowerMap = setupKeyToLowerMap(true); }
\r
81 return _dbNamePropertyNameKeyToLowerMap;
\r
83 protected static Map<String, String> _propertyNameDbNameKeyToLowerMap;
\r
84 protected Map<String, String> createPropertyNameDbNameKeyToLowerMap() {
\r
85 if (_propertyNameDbNameKeyToLowerMap == null) { _propertyNameDbNameKeyToLowerMap = setupKeyToLowerMap(false); }
\r
86 return _propertyNameDbNameKeyToLowerMap;
\r
89 // ===================================================================================
\r
92 public String getEntityTypeName() { return "${myExtendedEntityPackageName}.${myExtendedObjectClassName}"; }
\r
93 #if ($isExistConditionBean)
\r
94 public String getConditionBeanTypeName() { return "${glPackageBaseCB}.${myConditionBeanClassName}"; }
\r
96 public String getConditionBeanTypeName() { return null; }
\r
99 public String getDaoTypeName() { return "${myExtendedDaoPackageName}.${myExtendedDaoClassName}"; }
\r
101 public String getDaoTypeName() { return null; }
\r
103 #if ($isExistBehavior)
\r
104 public String getBehaviorTypeName() { return "${myExtendedBhvPackageName}.${myExtendedBhvClassName}"; }
\r
106 public String getBehaviorTypeName() { return null; }
\r
109 // ===================================================================================
\r
112 public Class<${myExtendedObjectClassName}> getEntityType() { return ${myExtendedObjectClassName}.class; }
\r
114 // ===================================================================================
\r
117 public ${glEntityInterfaceName} newEntity() { return newMyEntity(); }
\r
118 public ${myExtendedObjectClassName} newMyEntity() { return new ${myExtendedObjectClassName}(); }
\r
120 // ===================================================================================
\r
123 // -----------------------------------------------------
\r
126 #if ($table.hasPrimaryKey())
\r
127 #if ($table.hasOnlyOnePrimaryKey())
\r
128 public ${glUniqueInfoName} getPrimaryUniqueInfo() { return createPrimaryUniqueInfo(column${table.primaryKeyAsOne.javaBeansRulePropertyNameInitCap}()); }
\r
130 public ${glUniqueInfoName} getPrimaryUniqueInfo() {
\r
131 ${glUniqueInfoName} uniqueInfo = createPrimaryUniqueInfo();
\r
132 #foreach ($col in $table.primaryKey)
\r
133 uniqueInfo.addUniqueColumnList(column${col.javaBeansRulePropertyNameInitCap}());
\r
139 public ${glUniqueInfoName} getPrimaryUniqueInfo() {
\r
140 throw new UnsupportedOperationException("The table doen not have primary key: " + getTableDbName());
\r
143 public boolean hasPrimaryKey() { return ${table.hasPrimaryKey()}; }
\r
144 public boolean hasTwoOrMorePrimaryKeys() { return ${table.hasTwoOrMorePrimaryKeys()}; }
\r
146 // ===================================================================================
\r
149 // -----------------------------------------------------
\r
150 // Foreign Property
\r
151 // ----------------
\r
152 #foreach ($foreignKeys in $table.foreignKeys)
\r
153 public ${glForeignInfoName} foreign${foreignKeys.foreignJavaBeansRulePropertyNameInitCap}() {
\r
154 #if ($foreignKeys.isSimpleKeyFK())
\r
155 #set ($column = $foreignKeys.localColumnAsOne)
\r
156 #set ($yourColumn = ${foreignKeys.getForeignColumnByLocalColumn(${column})})
\r
157 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap(column${column.javaBeansRulePropertyNameInitCap}(), ${foreignKeys.foreignTableDBMetaClassName}.getInstance().column${yourColumn.javaBeansRulePropertyNameInitCap}());
\r
159 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap();
\r
160 #foreach ($column in $foreignKeys.localColumnList)
\r
161 #set ($yourColumn = ${foreignKeys.getForeignColumnByLocalColumn(${column})})
\r
162 map.put(column${column.javaBeansRulePropertyNameInitCap}(), ${foreignKeys.foreignTableDBMetaClassName}.getInstance().column${yourColumn.javaBeansRulePropertyNameInitCap}());
\r
165 return cfi("${foreignKeys.foreignJavaBeansRulePropertyName}", this, ${foreignKeys.foreignTableDBMetaClassName}.getInstance(), map, ${table.resolveForeignIndex($foreignKeys)}, ${foreignKeys.isOneToOne()});
\r
168 #foreach ($referrer in $table.referrers)
\r
169 #set ($genericsColumnInfoMap = "${glColumnInfoName}, ${glColumnInfoName}")
\r
170 #if (${referrer.isOneToOne()})
\r
171 public ${glForeignInfoName} foreign${referrer.referrerJavaBeansRulePropertyNameAsOneInitCap}() {
\r
172 #if ($referrer.isSimpleKeyFK())
\r
173 #set ($column = $referrer.foreignColumnAsOne)
\r
174 #set ($yourColumn = ${referrer.getLocalColumnByForeignColumn(${column})})
\r
175 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap(column${column.javaBeansRulePropertyNameInitCap}(), ${referrer.referrerTableDBMetaClassName}.getInstance().column${yourColumn.javaBeansRulePropertyNameInitCap}());
\r
177 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap();
\r
178 #foreach ($column in $referrer.foreignColumnList)
\r
179 #set ($yourColumn = ${referrer.getLocalColumnByForeignColumn(${column})})
\r
180 map.put(column${column.javaBeansRulePropertyNameInitCap}(), ${referrer.referrerTableDBMetaClassName}.getInstance().column${yourColumn.javaBeansRulePropertyNameInitCap}());
\r
183 return cfi("${referrer.refererJavaBeansRulePropertyNameAsOne}", this, ${referrer.referrerTableDBMetaClassName}.getInstance(), map, ${table.resolveReferrerIndexAsOne($referrer)}, ${referrer.isOneToOne()});
\r
188 // -----------------------------------------------------
\r
189 // Referrer Property
\r
190 // -----------------
\r
191 #foreach ($referrer in $table.referrers)
\r
192 #if (!${referrer.isOneToOne()})
\r
193 public ${glReferrerInfoName} referrer${referrer.referrerJavaBeansRulePropertyNameInitCap}() {
\r
194 #if ($referrer.isSimpleKeyFK())
\r
195 #set ($column = $referrer.foreignColumnAsOne)
\r
196 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap(column${column.javaBeansRulePropertyNameInitCap}(), ${referrer.referrerTableDBMetaClassName}.getInstance().column${referrer.getLocalColumnByForeignColumn(${column}).javaBeansRulePropertyNameInitCap}());
\r
198 Map<${glColumnInfoName}, ${glColumnInfoName}> map = newLinkedHashMap();
\r
199 #foreach ($column in $referrer.foreignColumnList)
\r
200 map.put(column${column.javaBeansRulePropertyNameInitCap}(), ${referrer.referrerTableDBMetaClassName}.getInstance().column${referrer.getLocalColumnByForeignColumn(${column}).javaBeansRulePropertyNameInitCap}());
\r
203 return cri("${referrer.referrerJavaBeansRulePropertyName}", this, ${referrer.referrerTableDBMetaClassName}.getInstance(), map, ${referrer.isOneToOne()});
\r
207 #if ($database.isMakeFlatExpansion())
\r
209 // -----------------------------------------------------
\r
212 public ${table.relationTraceClassName}RelationTrace createRelationTrace(RelationTraceFixHandler relationTraceFixHandler) {
\r
213 return new ${table.relationTraceClassName}RelationTrace(relationTraceFixHandler);
\r
216 public ${table.relationTraceClassName}RelationTrace createRelationTrace(List<${glRelationInfoName}> relationList, List<AbstractRelationTrace> relationTraceList) {
\r
217 return new ${table.relationTraceClassName}RelationTrace(relationList, relationTraceList);
\r
220 public static class ${table.relationTraceClassName}RelationTrace extends AbstractRelationTrace {
\r
223 * Constructor for first step.
\r
224 * @param relationTraceFixHandler The handler of fixed relation trace. (Nullable)
\r
226 public ${table.relationTraceClassName}RelationTrace(RelationTraceFixHandler relationTraceFixHandler) {
\r
227 super(relationTraceFixHandler);
\r
231 * Constructor for relation step.
\r
232 * @param relationList The list of relation. (NotNull)
\r
233 * @param relationTraceList The list of relation trace. (NotNull)
\r
235 public ${table.relationTraceClassName}RelationTrace(List<${glRelationInfoName}> relationList, List<AbstractRelationTrace> relationTraceList) {
\r
236 super(relationList, relationTraceList);
\r
239 #foreach ($foreignKeys in $table.foreignKeys)
\r
240 public ${foreignKeys.foreignTableDBMetaClassName}.${foreignKeys.foreignTable.relationTraceClassName}RelationTrace foreign${foreignKeys.foreignJavaBeansRulePropertyNameInitCap}() {
\r
241 _relationList.add(${myDBMetaClassName}.getInstance().foreign${foreignKeys.foreignJavaBeansRulePropertyNameInitCap}());
\r
242 return ${foreignKeys.foreignTableDBMetaClassName}.getInstance().createRelationTrace(_relationList, _relationTraceList);
\r
245 #foreach ($referrer in $table.referrers)
\r
246 #if (${referrer.isOneToOne()})
\r
247 public ${referrer.referrerTableDBMetaClassName}.${referrer.table.relationTraceClassName}RelationTrace foreign${referrer.referrerJavaBeansRulePropertyNameAsOneInitCap}() {
\r
248 _relationList.add(${myDBMetaClassName}.getInstance().foreign${referrer.referrerJavaBeansRulePropertyNameAsOneInitCap}());
\r
249 return ${referrer.referrerTableDBMetaClassName}.getInstance().createRelationTrace(_relationList, _relationTraceList);
\r
253 #foreach ($referrer in $table.referrers)
\r
254 #if (!${referrer.isOneToOne()})
\r
255 public ${referrer.referrerTableDBMetaClassName}.${referrer.table.relationTraceClassName}RelationTrace referrer${referrer.referrerJavaBeansRulePropertyNameInitCap}() {
\r
256 _relationList.add(${myDBMetaClassName}.getInstance().referrer${referrer.referrerJavaBeansRulePropertyNameInitCap}());
\r
257 return ${referrer.referrerTableDBMetaClassName}.getInstance().createRelationTrace(_relationList, _relationTraceList);
\r
262 #foreach ($col in $table.columns)
\r
263 public RelationTrace column${col.javaBeansRulePropertyNameInitCap}() { return fixTrace(_relationList, ${myDBMetaClassName}.getInstance().column${col.javaBeansRulePropertyNameInitCap}()); }
\r
268 // ===================================================================================
\r
271 #if ($table.isUseSequence())
\r
272 public boolean hasSequence() { return true; }
\r
273 public String getSequenceNextValSql() { return "${table.sequenceNextSql}"; }
\r
275 #if ($table.isUseVersionNo())
\r
276 public boolean hasVersionNo() { return true; }
\r
277 public ${glColumnInfoName} getVersionNoColumnInfo() { return _column${table.versionNoJavaName}; }
\r
279 #if ($table.isUseUpdateDate())
\r
280 public boolean hasUpdateDate() { return true; }
\r
281 public ${glColumnInfoName} getUpdateDateColumnInfo() { return _column${table.updateDateJavaName}; }
\r
283 #if ($table.hasAllCommonColumn())
\r
284 public boolean hasCommonColumn() { return true; }
\r
287 // ===================================================================================
\r
289 // ===============
\r
290 // -----------------------------------------------------
\r
293 public void acceptPrimaryKeyMap(${glEntityInterfaceName} entity, Map<String, ? extends Object> primaryKeyMap) {
\r
294 doAcceptPrimaryKeyMap((${myExtendedObjectClassName})entity, primaryKeyMap, _epsMap);
\r
297 public void acceptPrimaryKeyMapString(${glEntityInterfaceName} entity, String primaryKeyMapString) {
\r
298 MapStringUtil.acceptPrimaryKeyMapString(primaryKeyMapString, entity);
\r
301 public void acceptColumnValueMap(${glEntityInterfaceName} entity, Map<String, ? extends Object> columnValueMap) {
\r
302 doAcceptColumnValueMap((${myExtendedObjectClassName})entity, columnValueMap, _epsMap);
\r
305 public void acceptColumnValueMapString(${glEntityInterfaceName} entity, String columnValueMapString) {
\r
306 MapStringUtil.acceptColumnValueMapString(columnValueMapString, entity);
\r
309 // -----------------------------------------------------
\r
312 public String extractPrimaryKeyMapString(${glEntityInterfaceName} entity) { return MapStringUtil.extractPrimaryKeyMapString(entity); }
\r
313 public String extractPrimaryKeyMapString(${glEntityInterfaceName} entity, String startBrace, String endBrace, String delimiter, String equal) {
\r
314 return doExtractPrimaryKeyMapString(entity, startBrace, endBrace, delimiter, equal);
\r
316 public String extractColumnValueMapString(${glEntityInterfaceName} entity) { return MapStringUtil.extractColumnValueMapString(entity); }
\r
317 public String extractColumnValueMapString(${glEntityInterfaceName} entity, String startBrace, String endBrace, String delimiter, String equal) {
\r
318 return doExtractColumnValueMapString(entity, startBrace, endBrace, delimiter, equal);
\r
320 #if ($database.isMakeDBMetaCommonColumnHandling())
\r
321 #if (${table.hasAllCommonColumn()})
\r
323 public String extractCommonColumnValueMapString(${glEntityInterfaceName} entity) {
\r
324 return extractCommonColumnValueMapString(entity, MAP_STRING_START_BRACE, MAP_STRING_END_BRACE, MAP_STRING_DELIMITER, MAP_STRING_EQUAL);
\r
327 public String extractCommonColumnValueMapString(${glEntityInterfaceName} entity, String startBrace, String endBrace, String delimiter, String equal) {
\r
328 final ${myExtendedObjectClassName} myEntity = (${myExtendedObjectClassName})entity;
\r
329 final String mapMarkAndStartBrace = MAP_STRING_MAP_MARK + startBrace;
\r
330 final StringBuffer sb = new StringBuffer();
\r
331 #foreach ($columnName in ${database.commonColumnNameList})
\r
332 #set ($filteredColumnName = ${database.filterCommonColumn(${columnName})})
\r
333 #set ($commonColumnMap = ${database.commonColumnMap})
\r
334 #set ($columnType = ${commonColumnMap.get(${columnName})})
\r
335 #set ($javaNative = ${database.convertJavaNativeByJdbcType(${columnType})})
\r
336 #set ($javaName = ${database.convertJavaNameByJdbcNameAsColumn(${filteredColumnName})})
\r
337 #set ($targetColumnName = ${table.findTargetColumnNameByCommonColumnName(${columnName})})
\r
338 #set ($col = $table.getColumnByFlexibleName($columnName))
\r
339 #if ($col.isJavaNativeDateObject())
\r
341 sb.append(delimiter).append("${targetColumnName}").append(equal);
\r
342 sb.append((myEntity.get${javaName}() != null ? helpFormatingDate(myEntity.get${javaName}()) : ""));
\r
345 sb.append(delimiter).append("${targetColumnName}").append(equal);
\r
346 sb.append((myEntity.get${javaName}() != null ? myEntity.get${javaName}().toString() : ""));
\r
350 sb.delete(0, delimiter.length()).insert(0, mapMarkAndStartBrace).append(endBrace);
\r
351 return sb.toString();
\r
355 public String extractCommonColumnValueMapString(${glEntityInterfaceName} entity) {
\r
359 public String extractCommonColumnValueMapString(${glEntityInterfaceName} entity, String startBrace, String endBrace, String delimiter, String equal) {
\r
360 return "map:" + startBrace + endBrace;
\r
365 // -----------------------------------------------------
\r
368 public List<Object> convertToColumnValueList(${glEntityInterfaceName} entity) { return newArrayList(convertToColumnValueMap(entity).values()); }
\r
369 public Map<String, Object> convertToColumnValueMap(${glEntityInterfaceName} entity) { return doConvertToColumnValueMap(entity); }
\r
370 public List<String> convertToColumnStringValueList(${glEntityInterfaceName} entity) { return newArrayList(convertToColumnStringValueMap(entity).values()); }
\r
371 public Map<String, String> convertToColumnStringValueMap(${glEntityInterfaceName} entity) { return doConvertToColumnStringValueMap(entity); }
\r
372 #if ($database.isMakeDBMetaJDBCSupport())
\r
374 // ===================================================================================
\r
377 public String getPreparedInsertClause() {
\r
378 return getPreparedInsertClause(new PreparedInsertClauseOption());
\r
381 public String getPreparedInsertClause(PreparedInsertClauseOption preparedInsertClauseOption) {
\r
382 if (preparedInsertClauseOption.getTablePrefix() != null) {
\r
383 final String tablePrefix = preparedInsertClauseOption.getTablePrefix();
\r
384 return "insert into " + tablePrefix + "${table.name}(${table.ColumnNameCommaString}) values(${table.insertClauseValuesAsQuetionMark})";
\r
386 return "insert into ${table.name}(${table.ColumnNameCommaString}) values(${table.insertClauseValuesAsQuetionMark})";
\r
390 // ===================================================================================
\r
391 // Entity Property Setup
\r
392 // =====================
\r
393 // It's very INTERNAL!
\r
394 protected Map<String, Eps<${myExtendedObjectClassName}>> _epsMap = newHashMap();
\r
396 #foreach ($column in $table.columns)
\r
397 setupEps(_epsMap, new Eps${column.javaName}(), column${column.javaBeansRulePropertyNameInitCap}());
\r
401 public boolean hasEntityPropertySetupper(String propertyName) {
\r
402 return _epsMap.containsKey(propertyName);
\r
405 public void setupEntityProperty(String propertyName, Object entity, Object value) {
\r
406 findEps(_epsMap, propertyName).setup((${myExtendedObjectClassName})entity, value);
\r
409 #foreach ($column in $table.columns)
\r
410 public static class Eps${column.javaName} implements Eps<${myExtendedObjectClassName}> {
\r
411 public void setup(${myExtendedObjectClassName} e, Object v) { e.set${column.javaName}((${column.javaNative})v); }
\r