|
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();
|