From: <max...@us...> - 2006-02-23 18:05:29
|
Update of /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15356/src/java/org/hibernate/cfg/reveng Modified Files: JDBCReader.java OverrideBinder.java OverrideRepository.java DelegatingReverseEngineeringStrategy.java ReverseEngineeringStrategy.java DefaultReverseEngineeringStrategy.java Log Message: HBX-574 column exclude + fixed some tests Index: JDBCReader.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCReader.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- JDBCReader.java 8 Feb 2006 11:56:35 -0000 1.30 +++ JDBCReader.java 23 Feb 2006 18:05:21 -0000 1.31 @@ -493,8 +493,14 @@ String sqlTypeName = (String) columnRs.get("TYPE_NAME"); String columnName = (String) columnRs.get("COLUMN_NAME"); + String comment = (String) columnRs.get("REMARKS"); + TableIdentifier ti = TableIdentifier.create(table); + if(revengStrategy.excludeColumn(ti, columnName)) { + log.debug("Column " + ti + "." + columnName + " excluded by strategy"); + continue; + } if(!tableName.equals(table.getName())) { log.debug("Table name " + tableName + " does not match requested " + table.getName() + ". Ignoring column " + columnName + " since it either is invalid or a duplicate" ); continue; Index: OverrideBinder.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideBinder.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- OverrideBinder.java 27 Jan 2006 00:51:37 -0000 1.12 +++ OverrideBinder.java 23 Feb 2006 18:05:21 -0000 1.13 @@ -154,14 +154,21 @@ if(StringHelper.isNotEmpty(attributeValue)) { column.setSqlTypeCode(new Integer(JDBCToHibernateTypeHelper.getJDBCType(attributeValue))); } + + TableIdentifier tableIdentifier = TableIdentifier.create(table); if(table.getColumn(column)!=null) { - throw new MappingException("Column " + column.getName() + " already exists in table " + TableIdentifier.create(table) ); + throw new MappingException("Column " + column.getName() + " already exists in table " + tableIdentifier ); } table.addColumn(column); columnNames.add(column.getName()); - repository.setTypeNameForColumn(TableIdentifier.create(table), column.getName(), element.attributeValue("type")); - repository.setPropertyNameForColumn(TableIdentifier.create(table), column.getName(), element.attributeValue("property")); + repository.setTypeNameForColumn(tableIdentifier, column.getName(), element.attributeValue("type")); + repository.setPropertyNameForColumn(tableIdentifier, column.getName(), element.attributeValue("property")); + + boolean excluded = Boolean.valueOf(element.attributeValue("exclude")).booleanValue(); + if(excluded) { + repository.setExcludedColumn(tableIdentifier, column.getName()); + } String foreignTableName = element.attributeValue("foreign-table"); if(foreignTableName!=null) { Index: OverrideRepository.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- OverrideRepository.java 27 Jan 2006 00:51:37 -0000 1.18 +++ OverrideRepository.java 23 Feb 2006 18:05:21 -0000 1.19 @@ -6,10 +6,12 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import net.sf.cglib.core.KeyFactory; @@ -48,9 +50,14 @@ final private Map primaryKeyColumnsForTable; + final private Set excludedColumns; + + final private Map tableToClassName; + private String defaultCatalog; private String defaultSchema; - private HashMap tableToClassName; + + public OverrideRepository(String defaultCatalog, String defaultSchema) { this.defaultCatalog = null; @@ -67,6 +74,7 @@ identifierPropertiesForTable = new HashMap(); primaryKeyColumnsForTable = new HashMap(); tableToClassName = new HashMap(); + excludedColumns = new HashSet(); } public OverrideRepository addFile(File xmlFile) { @@ -241,11 +249,15 @@ return OverrideRepository.this.excludeTable(ti); } + public boolean excludeColumn(TableIdentifier identifier, String columnName) { + return excludedColumns.contains(TABLECOLUMN_KEY_FACTORY.newInstance(identifier, columnName)); + } + public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable) { String result = null; String location = ""; if(table!=null) { - location = "Table: " + Table.qualify(table.getCatalog(), table.getSchema(), table.getName() ); + location = "Table: " + Table.qualify(table.getCatalog(), table.getSchema(), table.getName() ) + " column: " + columnName; } else { location += " Column: " + columnName + " l:" + length + " p:" + precision + " s:" + scale; } @@ -372,6 +384,10 @@ } } + public void setExcludedColumn(TableIdentifier tableIdentifier, String columnName) { + excludedColumns.add(TABLECOLUMN_KEY_FACTORY.newInstance(tableIdentifier, columnName)); + } + public void setPropertyNameForColumn(TableIdentifier identifier, String columnName, String property) { if(StringHelper.isNotEmpty(property)) { propertyNameForColumn.put(TABLECOLUMN_KEY_FACTORY.newInstance(identifier, columnName), property); @@ -400,5 +416,7 @@ public String getSchema(String string) { return string==null?defaultSchema:string; } + + } Index: DelegatingReverseEngineeringStrategy.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- DelegatingReverseEngineeringStrategy.java 25 Jan 2006 15:59:28 -0000 1.16 +++ DelegatingReverseEngineeringStrategy.java 23 Feb 2006 18:05:21 -0000 1.17 @@ -25,6 +25,10 @@ public boolean excludeTable(TableIdentifier ti) { return delegate==null?false:delegate.excludeTable(ti); } + + public boolean excludeColumn(TableIdentifier identifier, String columnName) { + return delegate==null?false:delegate.excludeColumn(identifier, columnName); + } public String foreignKeyToCollectionName(String keyname, TableIdentifier fromTable, List fromColumns, TableIdentifier referencedTable, List referencedColumns, boolean uniqueReference) { return delegate==null?null:delegate.foreignKeyToCollectionName(keyname, fromTable, fromColumns, referencedTable, referencedColumns, uniqueReference); Index: ReverseEngineeringStrategy.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- ReverseEngineeringStrategy.java 31 Jan 2006 06:17:07 -0000 1.14 +++ ReverseEngineeringStrategy.java 23 Feb 2006 18:05:21 -0000 1.15 @@ -41,6 +41,8 @@ public boolean excludeTable(TableIdentifier ti); + public boolean excludeColumn(TableIdentifier identifier, String columnName); + /** * Gets the preferred Hibernate type for an SQL type. * @param table name of the table, can be null @@ -96,8 +98,6 @@ public String getOptimisticLockColumnName(TableIdentifier identifier); public Boolean useColumnForOptimisticLock(TableIdentifier identifier, String column); - - - + } Index: DefaultReverseEngineeringStrategy.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- DefaultReverseEngineeringStrategy.java 25 Jan 2006 16:55:24 -0000 1.23 +++ DefaultReverseEngineeringStrategy.java 23 Feb 2006 18:05:21 -0000 1.24 @@ -115,6 +115,10 @@ if(ti.getName().startsWith("BIN$")) return true; // hard code oracle recycle bin names. Better than requiring users to do it manually. TODO: make it dependent on dialect. return false; } + + public boolean excludeColumn(TableIdentifier identifier, String columnName) { + return false; + } public String tableToClassName(TableIdentifier tableIdentifier) { @@ -166,6 +170,7 @@ public Boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) { return AUTO_OPTIMISTICLOCK_COLUMNS.contains(column.toLowerCase())?Boolean.TRUE:Boolean.FALSE; } + } |