From: <hib...@li...> - 2006-04-07 17:55:53
|
Author: max...@jb... Date: 2006-04-07 13:55:45 -0400 (Fri, 07 Apr 2006) New Revision: 9740 Added: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCMetaDataConfiguration.java trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java Log: use settings object instead of naive map. Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -455,8 +455,8 @@ Iterator columnIterator = table.getColumnIterator(); while(columnIterator.hasNext()) { Column column = (Column) columnIterator.next(); - Boolean useIt = revengStrategy.useColumnForOptimisticLock(identifier, column.getName()); - if(Boolean.TRUE==useIt && !processed.contains(column)) { + boolean useIt = revengStrategy.useColumnForOptimisticLock(identifier, column.getName()); + if(useIt && !processed.contains(column)) { bindVersionProperty( table, identifier, column, rc, processed, mapping ); return; } Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCMetaDataConfiguration.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCMetaDataConfiguration.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCMetaDataConfiguration.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -73,7 +73,6 @@ private boolean ignoreconfigxmlmapppings = true; // set to true and fk's that are part of a primary key will just be mapped as the raw value and as a readonly property. if false, it will be <many-to-one-key-property private boolean preferBasicCompositeIds = true; - private boolean scanForVersioningColumns = true; /** * If true, compositeid's will not create key-many-to-one and @@ -87,15 +86,7 @@ public void setPreferBasicCompositeIds(boolean flag) { preferBasicCompositeIds = flag; } - - public boolean scanForVersioningColumns() { - return scanForVersioningColumns; - } - - public void setScanForVersioningColumns(boolean scanForVersioningColumns) { - this.scanForVersioningColumns = scanForVersioningColumns; - } - + protected void parseMappingElement(Element subelement, String name) { if(!ignoreconfigxmlmapppings ) { super.parseMappingElement(subelement, name); Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -16,11 +16,11 @@ public class DefaultReverseEngineeringStrategy implements ReverseEngineeringStrategy { - Log log = LogFactory.getLog(DefaultReverseEngineeringStrategy.class); + static final private Log log = LogFactory.getLog(DefaultReverseEngineeringStrategy.class); - String packageName = ""; - private static Set AUTO_OPTIMISTICLOCK_COLUMNS; + + private ReverseEngineeringSettings settings; static { AUTO_OPTIMISTICLOCK_COLUMNS = new HashSet(); AUTO_OPTIMISTICLOCK_COLUMNS.add("version"); @@ -89,19 +89,6 @@ return propertyName; } - - public void setPackageName(String pkg) { - if(pkg==null) this.packageName = ""; - this.packageName = pkg.trim(); - } - - /** - * @return Returns the default packagename which will be used for class names returned by this namingstrategy. - */ - public String getPackageName() { - return packageName; - } - public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) { String preferredHibernateType = JDBCToHibernateTypeHelper.getPreferredHibernateType(sqlType, length, precision, scale, nullable, generatedIdentifier); if(preferredHibernateType==null) { @@ -122,7 +109,7 @@ public String tableToClassName(TableIdentifier tableIdentifier) { - String pkgName = (packageName == null ? "" : packageName ); + String pkgName = settings.getDefaultPackageName(); String className = toUpperCamelCase( tableIdentifier.getName() ); if(pkgName.length()>0) { @@ -167,8 +154,12 @@ return null; } - public Boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) { - return AUTO_OPTIMISTICLOCK_COLUMNS.contains(column.toLowerCase())?Boolean.TRUE:Boolean.FALSE; + public boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) { + if(settings.hasDefaultOptimisticLockDetection()) { + return AUTO_OPTIMISTICLOCK_COLUMNS.contains(column.toLowerCase())?true:false; + } else { + return false; + } } public List getSchemaSelections() { @@ -198,5 +189,9 @@ public boolean isForeignKeyCollectionLazy(String name, TableIdentifier foreignKeyTable, List columns, TableIdentifier foreignKeyReferencedTable, List referencedColumns) { return true; } + + public void setSettings(ReverseEngineeringSettings settings) { + this.settings = settings; + } } Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -74,8 +74,8 @@ return delegate==null?null:delegate.getOptimisticLockColumnName(identifier); } - public Boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) { - return delegate==null?null:delegate.useColumnForOptimisticLock(identifier, column); + public boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) { + return delegate==null?false:delegate.useColumnForOptimisticLock(identifier, column); } public List getSchemaSelections() { @@ -104,6 +104,10 @@ public boolean isForeignKeyCollectionLazy(String name, TableIdentifier foreignKeyTable, List columns, TableIdentifier foreignKeyReferencedTable, List referencedColumns) { return delegate==null?true:delegate.isForeignKeyCollectionLazy(name, foreignKeyTable, columns, foreignKeyReferencedTable, referencedColumns); + } + + public void setSettings(ReverseEngineeringSettings settings) { + if(delegate!=null) delegate.setSettings(settings); } } Added: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -0,0 +1,44 @@ +package org.hibernate.cfg.reveng; + +public class ReverseEngineeringSettings { + + + //final ReverseEngineeringStrategy rootStrategy; + + String defaultPackageName = ""; + private boolean defaultOptimisticLockDetection = true; + + //public ReverseEngineeringSettings(ReverseEngineeringStrategy rootStrategy) { + // this.rootStrategy = rootStrategy; + //} + + public ReverseEngineeringSettings setDefaultPackageName(String defaultPackageName) { + if(defaultPackageName==null) { + this.defaultPackageName = ""; + } else { + this.defaultPackageName= defaultPackageName.trim(); + } + return this; + } + + /** return the default packageName. Never null, at least the empty string */ + public String getDefaultPackageName() { + return defaultPackageName; + } + + public boolean hasDefaultOptimisticLockDetection() { + return defaultOptimisticLockDetection ; + } + + public void setDefaultOptimisticLockDetection( + boolean optimisticLockSupportEnabled) { + this.defaultOptimisticLockDetection = optimisticLockSupportEnabled; + } + + + /** return the top/root strategy. Allows a lower strategy to ask another question. Dangerous to do since recursive loops can easily occur! */ + /*public ReverseEngineeringStrategy getRootStrategy() { + return rootStrategy; + }*/ + +} Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -9,7 +9,30 @@ public interface ReverseEngineeringStrategy { /** + * Generic method used to initialize the reverse engineering strategy. * + * @param settings used for this + */ + public void setSettings(ReverseEngineeringSettings settings); + + /** + * Configure the reverse engineering strategy. Called before reverse engineering commences. + * + * This is mainly for exotic strategies to get access to a connection. + * + * @param provider a connectionprovider. It is the responsibility of the metadatadialect to open/close any used connections via this provider. + * @param sec sqlexceptionConverter, use to convert any possible SQLExceptions. + */ + public void configure(ConnectionProvider provider, SQLExceptionConverter sec); + + + /** + * Close any resources this strategy might have used. Called after reverse engineering has been completed. + */ + public void close(); + + /** + * * @return a fully-qualified class name (must be aligned with tableToPackageName and tableToSimpleClassName) */ public String tableToClassName(TableIdentifier tableIdentifier); @@ -95,26 +118,11 @@ */ public String classNameToCompositeIdName(String className); - /** - * Configure the reverse engineering strategy. - * - * This is mainly for exotic strategies to get access to a connection. - * - * @param provider a connectionprovider. It is the responsibility of the metadatadialect to open/close any used connections via this provider. - * @param sec sqlexceptionConverter, use to convert any possible SQLExceptions. - */ - public void configure(ConnectionProvider provider, SQLExceptionConverter sec); - - - /** - * Close any resources this strategy might have used. - */ - public void close(); - + /** Return explicit which column name should be used for optimistic lock */ public String getOptimisticLockColumnName(TableIdentifier identifier); - public Boolean useColumnForOptimisticLock(TableIdentifier identifier, String column); + public boolean useColumnForOptimisticLock(TableIdentifier identifier, String column); /** return list of SchemaSelctors * Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java 2006-04-07 17:53:03 UTC (rev 9739) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java 2006-04-07 17:55:45 UTC (rev 9740) @@ -15,6 +15,7 @@ import org.hibernate.cfg.Settings; import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy; import org.hibernate.cfg.reveng.OverrideRepository; +import org.hibernate.cfg.reveng.ReverseEngineeringSettings; import org.hibernate.cfg.reveng.ReverseEngineeringStrategy; import org.hibernate.util.ReflectHelper; @@ -48,26 +49,28 @@ jmdc.setPreferBasicCompositeIds(preferBasicCompositeIds); DefaultReverseEngineeringStrategy defaultStrategy = new DefaultReverseEngineeringStrategy(); + ReverseEngineeringSettings qqsettings = new ReverseEngineeringSettings().setDefaultPackageName(packageName); + if(packageName!=null) { - defaultStrategy.setPackageName(packageName); + defaultStrategy.setSettings(qqsettings); } ReverseEngineeringStrategy strategy = defaultStrategy; if(revengFiles!=null) { - Settings settings = configuration.buildSettings(); OverrideRepository or = new OverrideRepository(); String[] fileNames = revengFiles.list(); for (int i = 0; i < fileNames.length; i++) { or.addFile(new File(fileNames[i]) ); } - strategy = or.getReverseEngineeringStrategy(defaultStrategy); + strategy = or.getReverseEngineeringStrategy(defaultStrategy); } if(reverseEngineeringStrategyClass!=null) { - strategy = loadreverseEngineeringStrategy(reverseEngineeringStrategyClass, strategy); + strategy = loadreverseEngineeringStrategy(reverseEngineeringStrategyClass, strategy); } + strategy.setSettings(qqsettings); jmdc.setReverseEngineeringStrategy(strategy); jmdc.readFromJDBC(); |