[hibernate-commits] Hibernate SVN: r10255 - in trunk/HibernateExt/tools/src: java/org/hibernate/cfg java/org/hibernate/cfg/reveng java/org/hibernate/tool/ant java/org/hibernate/tool/hbm2x java/org/hibernate/tool/hbm2x/visitor templates/dao test/org/hibernate/tool/test/jdbc2cfg
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Aug 14 10:26:26 EDT 2006
Author: max.andersen at jboss.com
Date: 2006-08-14 10:26:14 -0400 (Mon, 14 Aug 2006)
New Revision: 10255
Modified:
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java
trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java
trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java
trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/DefaultValueVisitor.java
trunk/HibernateExt/tools/src/templates/dao/daohome.ftl
trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/ManyToManyTest.java
Log:
detect many-to-many and optimstic lock setting exposed on ant task.
mix fixes/cleanup
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -258,7 +258,7 @@
}
if(keys.size()>1) {
- throw new JDBCBinderException("more than one other foreign key to choose from!"); // todo: hande better ?
+ throw new JDBCBinderException("more than one other foreign key to choose from!"); // todo: handle better ?
}
ForeignKey fk = (ForeignKey) keys.get( 0 );
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -160,7 +160,7 @@
}
public boolean useColumnForOptimisticLock(TableIdentifier identifier, String column) {
- if(settings.hasAutoOptimisticLockDetection()) {
+ if(settings.getDetectOptimsticLock()) {
return AUTO_OPTIMISTICLOCK_COLUMNS.contains(column.toLowerCase())?true:false;
} else {
return false;
@@ -200,16 +200,19 @@
}
public boolean isManyToManyTable(Table table) {
- if(settings.getAutoManyToManyDetection()) {
+ if(settings.getDetectManyToMany()) {
Iterator foreignKeyIterator = table.getForeignKeyIterator();
List foreignKeys = new ArrayList();
while ( foreignKeyIterator.hasNext() ) {
ForeignKey fkey = (ForeignKey) foreignKeyIterator.next();
foreignKeys.add( fkey );
if(foreignKeys.size()>2) {
- return false; // early exit if we have more than one fk.
+ return false; // early exit if we have more than two fk.
}
}
+/* if(foreignKeys.size()!=2) {
+ return false;
+ }*/
Set columns = new HashSet();
Iterator columnIterator = table.getColumnIterator();
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringSettings.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -6,10 +6,10 @@
//final ReverseEngineeringStrategy rootStrategy;
private String defaultPackageName = "";
- private boolean autoOptimisticLockDetection = true;
+ private boolean detectOptimisticLock = true;
private boolean createCollectionForForeignKey = true;
private boolean createManyToOneForForeignKey = true;
- private boolean autoManyToManyDetection;
+ private boolean detectManyToMany = true;
//public ReverseEngineeringSettings(ReverseEngineeringStrategy rootStrategy) {
// this.rootStrategy = rootStrategy;
@@ -30,13 +30,14 @@
}
/** If true, reverse engineering strategy will try and autodetect columns for optimistc locking, e.g. VERSION and TIMESTAMP */
- public boolean hasAutoOptimisticLockDetection() {
- return autoOptimisticLockDetection ;
+ public boolean getDetectOptimsticLock() {
+ return detectOptimisticLock ;
}
- public void setAutoOptimisticLockDetection(
+ public ReverseEngineeringSettings setDetectOptimisticLock(
boolean optimisticLockSupportEnabled) {
- this.autoOptimisticLockDetection = optimisticLockSupportEnabled;
+ this.detectOptimisticLock = optimisticLockSupportEnabled;
+ return this;
}
/** if true, a collection will be mapped for each foreignkey */
@@ -62,13 +63,13 @@
return this;
}
- public ReverseEngineeringSettings setAutoManyToManyDetection(boolean b) {
- this.autoManyToManyDetection = b;
+ public ReverseEngineeringSettings setDetectManyToMany(boolean b) {
+ this.detectManyToMany = b;
return this;
}
- public boolean getAutoManyToManyDetection() {
- return autoManyToManyDetection;
+ public boolean getDetectManyToMany() {
+ return detectManyToMany;
}
/** return the top/root strategy. Allows a lower strategy to ask another question. Dangerous to do since recursive loops can easily occur! */
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/JDBCConfigurationTask.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -31,6 +31,10 @@
private String reverseEngineeringStrategyClass;
private String packageName;
private Path revengFiles;
+
+ private boolean detectManyToMany;
+
+ private boolean detectOptimisticLock;
public JDBCConfigurationTask() {
setDescription("JDBC Configuration (for reverse engineering)");
@@ -49,7 +53,10 @@
jmdc.setPreferBasicCompositeIds(preferBasicCompositeIds);
DefaultReverseEngineeringStrategy defaultStrategy = new DefaultReverseEngineeringStrategy();
- ReverseEngineeringSettings qqsettings = new ReverseEngineeringSettings().setDefaultPackageName(packageName);
+ ReverseEngineeringSettings qqsettings =
+ new ReverseEngineeringSettings().setDefaultPackageName(packageName)
+ .setDetectManyToMany( detectManyToMany )
+ .setDetectOptimisticLock( detectOptimisticLock );
if(packageName!=null) {
defaultStrategy.setSettings(qqsettings);
@@ -93,6 +100,14 @@
preferBasicCompositeIds = b;
}
+ public void setDetectManyToMany(boolean b) {
+ detectManyToMany = b;
+ }
+
+ public void setDetectOptimisticLock(boolean b) {
+ detectOptimisticLock = b;
+ }
+
private ReverseEngineeringStrategy loadreverseEngineeringStrategy(final String className, ReverseEngineeringStrategy delegate)
throws BuildException {
try {
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -35,6 +35,7 @@
import org.hibernate.tool.hbm2x.pojo.ImportContext;
import org.hibernate.tool.hbm2x.pojo.NoopImportContext;
import org.hibernate.tool.hbm2x.pojo.POJOClass;
+import org.hibernate.tool.hbm2x.visitor.JavaTypeFromValueVisitor;
import org.hibernate.type.CompositeCustomType;
import org.hibernate.type.CustomType;
import org.hibernate.type.PrimitiveType;
@@ -206,7 +207,7 @@
private static Set NONPRIMITIVETYPES = null;
- boolean isNonPrimitiveTypeName(String typeName) {
+ static public boolean isNonPrimitiveTypeName(String typeName) {
if ( NONPRIMITIVETYPES == null ) {
NONPRIMITIVETYPES = new HashSet();
Field[] fields = Hibernate.class.getFields();
@@ -297,6 +298,7 @@
}
private String getJavaTypeName(Value value, boolean preferRawTypeNames) {
+ if(true) return (String) value.accept( new JavaTypeFromValueVisitor() );
if ( value instanceof Component) {
// composite-element breaks without it.
return ((Component)value).getComponentClassName();
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/DefaultValueVisitor.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/DefaultValueVisitor.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/visitor/DefaultValueVisitor.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -35,7 +35,7 @@
this.throwException = throwException;
}
- Object handle(Object o) {
+ protected Object handle(Object o) {
if (throwException) {
throw new UnsupportedOperationException("accept on " + o);
}
Modified: trunk/HibernateExt/tools/src/templates/dao/daohome.ftl
===================================================================
--- trunk/HibernateExt/tools/src/templates/dao/daohome.ftl 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/templates/dao/daohome.ftl 2006-08-14 14:26:14 UTC (rev 10255)
@@ -54,6 +54,7 @@
}
}
+<#if clazz.identifierProperty?has_content>
public ${declarationName} findById( ${pojo.getJavaTypeName(clazz.identifierProperty, jdk5)} id) {
log.debug("getting ${declarationName} instance with id: " + id);
try {
@@ -66,6 +67,7 @@
throw re;
}
}
+</#if>
<#else>
private final ${pojo.importType("org.hibernate.SessionFactory")} sessionFactory = getSessionFactory();
@@ -141,6 +143,7 @@
}
}
+<#if clazz.identifierProperty?has_content>
public ${declarationName} findById( ${c2j.getJavaTypeName(clazz.identifierProperty, jdk5)} id) {
log.debug("getting ${declarationName} instance with id: " + id);
try {
@@ -159,6 +162,7 @@
throw re;
}
}
+</#if>
<#if clazz.hasNaturalId()>
public ${declarationName} findByNaturalId(${c2j.asNaturalIdParameterList(clazz)}) {
Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/ManyToManyTest.java
===================================================================
--- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/ManyToManyTest.java 2006-08-14 10:20:21 UTC (rev 10254)
+++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/ManyToManyTest.java 2006-08-14 14:26:14 UTC (rev 10255)
@@ -42,7 +42,7 @@
localCfg = new JDBCMetaDataConfiguration();
DefaultReverseEngineeringStrategy c = new DefaultReverseEngineeringStrategy();
- c.setSettings(new ReverseEngineeringSettings().setAutoManyToManyDetection(true));
+ c.setSettings(new ReverseEngineeringSettings().setDetectManyToMany(false));
localCfg.setReverseEngineeringStrategy(c);
localCfg.readFromJDBC();
}
@@ -52,16 +52,16 @@
super.tearDown();
}
- public void testDefaultBiDirectional() {
+ public void testNoManyToManyBiDirectional() {
- PersistentClass project = cfg.getClassMapping("Project");
+ PersistentClass project = localCfg.getClassMapping("Project");
assertNotNull(project.getProperty("worksOns"));
//assertNotNull(project.getProperty("employee"));
assertEquals(3, project.getPropertyClosureSpan());
assertEquals("projectId", project.getIdentifierProperty().getName());
- PersistentClass employee = cfg.getClassMapping("Employee");
+ PersistentClass employee = localCfg.getClassMapping("Employee");
assertNotNull(employee.getProperty("worksOns"));
assertNotNull(employee.getProperty("employees"));
@@ -70,7 +70,7 @@
assertEquals(6, employee.getPropertyClosureSpan());
assertEquals("id", employee.getIdentifierProperty().getName());
- PersistentClass worksOn = cfg.getClassMapping("WorksOn");
+ PersistentClass worksOn = localCfg.getClassMapping("WorksOn");
assertNotNull(worksOn.getProperty("project"));
assertNotNull(worksOn.getProperty("employee"));
@@ -80,14 +80,14 @@
public void testAutoCreation() {
- assertNull("No middle class should be generated.", localCfg.getClassMapping( "WorksOn" ));
+ assertNull("No middle class should be generated.", cfg.getClassMapping( "WorksOn" ));
- assertNotNull("Should create worksontext since one of the foreign keys is not part of pk", localCfg.getClassMapping( "WorksOnContext" ));
+ assertNotNull("Should create worksontext since one of the foreign keys is not part of pk", cfg.getClassMapping( "WorksOnContext" ));
- PersistentClass projectClass = localCfg.getClassMapping("Project");
+ PersistentClass projectClass = cfg.getClassMapping("Project");
assertNotNull( projectClass );
- PersistentClass employeeClass = localCfg.getClassMapping("Employee");
+ PersistentClass employeeClass = cfg.getClassMapping("Employee");
assertNotNull( employeeClass );
assertPropertyNotExist( projectClass, "worksOns" );
@@ -106,9 +106,9 @@
public void testGenerateAndReadable() {
- localCfg.buildMappings();
+ cfg.buildMappings();
- HibernateMappingExporter hme = new HibernateMappingExporter(localCfg, getOutputDir());
+ HibernateMappingExporter hme = new HibernateMappingExporter(cfg, getOutputDir());
hme.start();
assertFileAndExists( new File(getOutputDir(), "Employee.hbm.xml") );
More information about the hibernate-commits
mailing list