Author: max...@jb...
Date: 2006-03-31 10:41:05 -0500 (Fri, 31 Mar 2006)
New Revision: 9723
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/DelegatingReverseEngineeringStrategy.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCToHibernateTypeHelper.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java
trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java
trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/DefaultReverseEngineeringStrategyTest.java
trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OverrideBinderTest.java
trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/overridetest.reveng.xml
trunk/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java
Log:
HBX-617 primary keys "nullablility" should be affected by the identifier strategy
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/JDBCBinder.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -260,7 +260,7 @@
while ( columnIterator.hasNext() ) {
Column fkcolumn = (Column) columnIterator.next();
if(fkcolumn.getSqlTypeCode()!=null) { // TODO: user defined foreign ref columns does not have a type set.
- guessAndAlignType(collectionTable, fkcolumn, mapping); // needed to ensure foreign key columns has same type as the "property" column.
+ guessAndAlignType(collectionTable, fkcolumn, mapping, false); // needed to ensure foreign key columns has same type as the "property" column.
}
keyValue.addColumn( fkcolumn );
}
@@ -305,6 +305,10 @@
}
final TableIdentifier tableIdentifier = TableIdentifier.create(table);
+
+ String tableIdentifierStrategyName = revengStrategy.getTableIdentifierStrategyName(tableIdentifier);
+ boolean naturalId = "assigned".equals(tableIdentifierStrategyName);
+
if (keyColumns.size()>1) {
id = handleCompositeKey(rc, processed, keyColumns, mapping);
idPropertyname = revengStrategy.tableToIdentifierPropertyName(tableIdentifier);
@@ -316,7 +320,7 @@
Column pkc = (Column) keyColumns.get(0);
checkColumn(pkc);
- id = bindColumnToSimpleValue(table, pkc, mapping);
+ id = bindColumnToSimpleValue(table, pkc, mapping, !naturalId);
idPropertyname = revengStrategy.tableToIdentifierPropertyName(tableIdentifier);
if(idPropertyname==null) {
@@ -325,12 +329,13 @@
processed.add(pkc);
}
- id.setIdentifierGeneratorStrategy(revengStrategy.getTableIdentifierStrategyName(tableIdentifier));
+ id.setIdentifierGeneratorStrategy(tableIdentifierStrategyName);
id.setIdentifierGeneratorProperties(revengStrategy.getTableIdentifierProperties(tableIdentifier));
- if("assigned".equals(id.getIdentifierGeneratorStrategy())) {
+ if(naturalId) {
id.setNullValue("undefined");
}
+
Property property = makeProperty(makeUnique(rc,idPropertyname), id, true, true, false, null, null);
rc.setIdentifierProperty(property);
rc.setIdentifier(id);
@@ -446,15 +451,15 @@
private Property bindBasicProperty(String propertyName, Table table, Column column, Set processedColumns, Mapping mapping) {
- SimpleValue value = bindColumnToSimpleValue( table, column, mapping );
+ SimpleValue value = bindColumnToSimpleValue( table, column, mapping, false );
return makeProperty(propertyName, value, true, true, false, null, null);
}
- private SimpleValue bindColumnToSimpleValue(Table table, Column column, Mapping mapping) {
+ private SimpleValue bindColumnToSimpleValue(Table table, Column column, Mapping mapping, boolean generatedIdentifier) {
SimpleValue value = new SimpleValue(table);
value.addColumn(column);
- value.setTypeName(guessAndAlignType(table, column, mapping));
+ value.setTypeName(guessAndAlignType(table, column, mapping, generatedIdentifier));
return value;
}
@@ -481,9 +486,10 @@
/**
* @param column
+ * @param generatedIdentifier
* @return
*/
- private String guessAndAlignType(Table table, Column column, Mapping mapping) {
+ private String guessAndAlignType(Table table, Column column, Mapping mapping, boolean generatedIdentifier) {
// TODO: this method mutates the column if the types does not match...not good.
// maybe we should copy the column instead before calling this method.
Integer sqlTypeCode = column.getSqlTypeCode();
@@ -496,7 +502,7 @@
TableIdentifier.create(table),
column.getName(),
sqlTypeCode.intValue(),
- column.getLength(), column.getPrecision(), column.getScale(), column.isNullable()
+ column.getLength(), column.getPrecision(), column.getScale(), column.isNullable(), generatedIdentifier
);
Type wantedType = TypeFactory.heuristicType(preferredHibernateType);
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -102,8 +102,8 @@
return packageName;
}
- public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable) {
- String preferredHibernateType = JDBCToHibernateTypeHelper.getPreferredHibernateType(sqlType, length, precision, scale, nullable);
+ 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) {
log.debug("No preferred hibernate type found for " + table.toString() + " column: " + columnName + " falling back to 'serializable'");
return "serializable";
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/DelegatingReverseEngineeringStrategy.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -38,8 +38,8 @@
return delegate==null?null:delegate.foreignKeyToEntityName(keyname, fromTable, fromColumnNames, referencedTable, referencedColumnNames, uniqueReference);
}
- public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable) {
- return delegate==null?null:delegate.columnToHibernateTypeName(table, columnName, sqlType, length, precision, scale, nullable);
+ public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
+ return delegate==null?null:delegate.columnToHibernateTypeName(table, columnName, sqlType, length, precision, scale, nullable, generatedIdentifier);
}
public String tableToClassName(TableIdentifier tableIdentifier) {
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCToHibernateTypeHelper.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCToHibernateTypeHelper.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/JDBCToHibernateTypeHelper.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -59,23 +59,24 @@
/* (non-Javadoc)
* @see org.hibernate.cfg.JDBCTypeToHibernateTypesStrategy#getPreferredHibernateType(int, int, int, int)
*/
- public static String getPreferredHibernateType(int sqlType, int size, int precision, int scale, boolean nullable) {
- if ( (sqlType == Types.DECIMAL || sqlType == Types.NUMERIC) && scale <= 0) { // <=
+ public static String getPreferredHibernateType(int sqlType, int size, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
+ boolean returnNullable = nullable || generatedIdentifier;
+ if ( (sqlType == Types.DECIMAL || sqlType == Types.NUMERIC) && scale <= 0) { // <=
if (precision == 1) {
// NUMERIC(1) is a often used idiom for storing boolean thus providing it out of the box.
- return nullable?Boolean.class.getName():"boolean";
+ return returnNullable?Boolean.class.getName():"boolean";
}
else if (precision < 3) {
- return nullable?Byte.class.getName():"byte";
+ return returnNullable?Byte.class.getName():"byte";
}
else if (precision < 5) {
- return nullable?Short.class.getName():"short";
+ return returnNullable?Short.class.getName():"short";
}
else if (precision < 10) {
- return nullable?Integer.class.getName():"integer";
+ return returnNullable?Integer.class.getName():"integer";
}
else if (precision < 19) {
- return nullable?Long.class.getName():"long";
+ return returnNullable?Long.class.getName():"long";
}
else {
return "big_decimal";
@@ -90,7 +91,7 @@
if(result==null) {
return null;
- } else if(nullable) {
+ } else if(returnNullable) {
return result[1];
} else {
return result[0];
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/OverrideRepository.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -282,7 +282,7 @@
}
}
- public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable) {
+ public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
String result = null;
String location = "";
if(table!=null) {
@@ -300,7 +300,7 @@
result = OverrideRepository.this.getPreferredHibernateType(sqlType, length, precision, scale, nullable);
if(result==null) {
- return super.columnToHibernateTypeName(table, columnName, sqlType, length, precision, scale, nullable);
+ return super.columnToHibernateTypeName(table, columnName, sqlType, length, precision, scale, nullable, generatedIdentifier);
}
else {
log.debug("columnToHibernateTypeName, <type-mapping> found: " + result + " for " + location);
Modified: trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java
===================================================================
--- trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/java/org/hibernate/cfg/reveng/ReverseEngineeringStrategy.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -51,10 +51,11 @@
* @param length The length of the column.
* @param precision The number of decimal digits, if applicable.
* @param scale The scale, if applicable.
- * @param nullable TODO
+ * @param nullable The nullability of the column
+ * @param generatedIdentifier true if for a column used in an identifier that is not "assigned", false otherwise.
* @return The Preferred hibernate type name.
*/
- public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable);
+ public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier);
/**
* Gets the user defined foreign keys.
Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/DefaultReverseEngineeringStrategyTest.java
===================================================================
--- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/DefaultReverseEngineeringStrategyTest.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/DefaultReverseEngineeringStrategyTest.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -106,11 +106,11 @@
}
public void testPreferredTypes() {
- assertEquals("int",rns.columnToHibernateTypeName(null, "bogus",Types.INTEGER,0,0,0, false));
- assertEquals("java.lang.Integer",rns.columnToHibernateTypeName(null, "bogus",Types.INTEGER,0,0,0, true));
- assertEquals("serializable",rns.columnToHibernateTypeName(new TableIdentifier("sdf"), "bogus",-567,0,0,0, false));
+ assertEquals("int",rns.columnToHibernateTypeName(null, "bogus",Types.INTEGER,0,0,0, false, false));
+ assertEquals("java.lang.Integer",rns.columnToHibernateTypeName(null, "bogus",Types.INTEGER,0,0,0, true, false));
+ assertEquals("serializable",rns.columnToHibernateTypeName(new TableIdentifier("sdf"), "bogus",-567,0,0,0, false, false));
- assertEquals("string",rns.columnToHibernateTypeName(new TableIdentifier("sdf"), "bogus",12,0,0,0, false));
+ assertEquals("string",rns.columnToHibernateTypeName(new TableIdentifier("sdf"), "bogus",12,0,0,0, false, false));
}
public void testReservedKeywordsHandling() {
Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OverrideBinderTest.java
===================================================================
--- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OverrideBinderTest.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/OverrideBinderTest.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -49,23 +49,23 @@
or.addResource(TEST_REVENG_XML);
ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(null);
- assertEquals("int", repository.columnToHibernateTypeName(null, null, Types.INTEGER, 5, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("long", repository.columnToHibernateTypeName(null, null, Types.INTEGER, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("byte[]", repository.columnToHibernateTypeName(null, null, Types.BIGINT, SQLTypeMapping.UNKNOWN_LENGTH, 5, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("java.math.BigInteger", repository.columnToHibernateTypeName(null, null, Types.BIGINT, SQLTypeMapping.UNKNOWN_LENGTH, 2, 3, false) );
- assertEquals("string", repository.columnToHibernateTypeName(null, null, Types.CHAR, 1, 10, SQLTypeMapping.UNKNOWN_SCALE, false) );
+ assertEquals("int", repository.columnToHibernateTypeName(null, null, Types.INTEGER, 5, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("long", repository.columnToHibernateTypeName(null, null, Types.INTEGER, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("byte[]", repository.columnToHibernateTypeName(null, null, Types.BIGINT, SQLTypeMapping.UNKNOWN_LENGTH, 5, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("java.math.BigInteger", repository.columnToHibernateTypeName(null, null, Types.BIGINT, SQLTypeMapping.UNKNOWN_LENGTH, 2, 3, false, false) );
+ assertEquals("string", repository.columnToHibernateTypeName(null, null, Types.CHAR, 1, 10, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
//assertEquals("string", repository.jdbcToHibernateType(Types.CHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE) );
- assertEquals("Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, 0, false) );
- assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, 43, false) );
+ assertEquals("Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, 0, false, false) );
+ assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, null, Types.NUMERIC, 1, 10, 43, false, false) );
// nullability
- assertEquals("nonnull-float", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,17,false) );
- assertEquals("null-float", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,17,true) );
+ assertEquals("nonnull-float", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,17,false, false) );
+ assertEquals("null-float", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,17,true, false) );
- assertEquals("onlynotnull", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,SQLTypeMapping.UNKNOWN_SCALE,false) );
- assertEquals("donotcare", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,SQLTypeMapping.UNKNOWN_SCALE,true) );
+ assertEquals("onlynotnull", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,SQLTypeMapping.UNKNOWN_SCALE,false, false) );
+ assertEquals("donotcare", repository.columnToHibernateTypeName(null, null, Types.FLOAT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION,SQLTypeMapping.UNKNOWN_SCALE,true, false) );
}
@@ -76,12 +76,12 @@
or.addResource(DOC_REVENG_XML);
ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(new DefaultReverseEngineeringStrategy());
- assertEquals("int", repository.columnToHibernateTypeName(null, "ID", Types.INTEGER, SQLTypeMapping.UNKNOWN_LENGTH, 10, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("your.package.TrimStringUserType", repository.columnToHibernateTypeName(null, "NAME", Types.VARCHAR, 30, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, true) );
- assertEquals("char", repository.columnToHibernateTypeName(null, "INITIAL", Types.VARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, true) );
- assertEquals("java.lang.Character", repository.columnToHibernateTypeName(null, "CODE", Types.VARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("big_decimal", repository.columnToHibernateTypeName(null, "SALARY", Types.NUMERIC, SQLTypeMapping.UNKNOWN_LENGTH, 15, SQLTypeMapping.UNKNOWN_SCALE, true) );
- assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, "AGE", Types.NUMERIC, SQLTypeMapping.UNKNOWN_LENGTH, 3, SQLTypeMapping.UNKNOWN_SCALE, true) );
+ assertEquals("int", repository.columnToHibernateTypeName(null, "ID", Types.INTEGER, SQLTypeMapping.UNKNOWN_LENGTH, 10, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("your.package.TrimStringUserType", repository.columnToHibernateTypeName(null, "NAME", Types.VARCHAR, 30, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, true, false) );
+ assertEquals("char", repository.columnToHibernateTypeName(null, "INITIAL", Types.VARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, true, false) );
+ assertEquals("java.lang.Character", repository.columnToHibernateTypeName(null, "CODE", Types.VARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("big_decimal", repository.columnToHibernateTypeName(null, "SALARY", Types.NUMERIC, SQLTypeMapping.UNKNOWN_LENGTH, 15, SQLTypeMapping.UNKNOWN_SCALE, true, false) );
+ assertEquals("java.lang.Long", repository.columnToHibernateTypeName(null, "AGE", Types.NUMERIC, SQLTypeMapping.UNKNOWN_LENGTH, 3, SQLTypeMapping.UNKNOWN_SCALE, true, false) );
}
@@ -138,9 +138,9 @@
or.addResource(OVERRIDETEST_REVENG_XML);
ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(null);
- assertNull(repository.columnToHibernateTypeName(new TableIdentifier("blah"), "bogus",0,0,0,0, false));
- assertNull(repository.columnToHibernateTypeName(new TableIdentifier("ORDERS"), "CUSTID",0,0,0,0, false));
- assertEquals("string", repository.columnToHibernateTypeName(new TableIdentifier(null, null, "ORDERS"), "NAME",0,0,0,0, false));
+ assertNull(repository.columnToHibernateTypeName(new TableIdentifier("blah"), "bogus",0,0,0,0, false, false));
+ assertNull(repository.columnToHibernateTypeName(new TableIdentifier("ORDERS"), "CUSTID",0,0,0,0, false, false));
+ assertEquals("string", repository.columnToHibernateTypeName(new TableIdentifier(null, null, "ORDERS"), "NAME",0,0,0,0, false, false));
PersistentClass classMapping = cfg.getClassMapping("Orders");
@@ -149,6 +149,13 @@
property = classMapping.getProperty("verified");
assertEquals("java.lang.Boolean because of null","java.lang.Boolean", ((SimpleValue)property.getValue()).getTypeName());
+
+ classMapping = cfg.getClassMapping("MiscTypes");
+
+ property = classMapping.getIdentifierProperty();
+
+ assertFalse(((SimpleValue)property.getValue()).isNullable());
+ assertEquals("java.lang.Long because of primary key", "java.lang.Long", ((SimpleValue)property.getValue()).getTypeName());
}
public void testColumnPropertyNameMappings() {
@@ -168,13 +175,17 @@
or.addResource(OVERRIDETEST_REVENG_XML);
ReverseEngineeringStrategy repository = or.getReverseEngineeringStrategy(null);
+ TableIdentifier miscTable = new TableIdentifier(null,null, "MISC_TYPES");
+ assertEquals("sequence",repository.getTableIdentifierStrategyName(miscTable));
+ Map props = repository.getTableIdentifierProperties(miscTable);
+ assertEquals("seq_table", props.get("table"));
+
assertNull(repository.getTableIdentifierStrategyName(new TableIdentifier("blah")));
assertNull(repository.getTableIdentifierProperties(new TableIdentifier("blah")));
TableIdentifier ordersTable = new TableIdentifier(null,null, "ORDERS");
- assertEquals("sequence",repository.getTableIdentifierStrategyName(ordersTable));
- Map props = repository.getTableIdentifierProperties(ordersTable);
- assertEquals("seq_table", props.get("table"));
+
+
assertEquals("customOrderId", repository.tableToIdentifierPropertyName(ordersTable));
assertEquals(null, repository.tableToIdentifierPropertyName(new TableIdentifier("blah")));
@@ -193,17 +204,22 @@
// applied
PersistentClass classMapping = cfg.getClassMapping("Orders");
- Component sv = (Component) classMapping.getIdentifier();
- assertEquals("CustomOID", sv.getComponentClassName());
- assertEquals("sequence", sv.getIdentifierGeneratorStrategy()); // will fail if default schema is not set since then there is no match in the override binder
+ SimpleValue sv = (SimpleValue) classMapping.getIdentifier();
+ assertEquals("CustomOID", ((Component)sv).getComponentClassName());
+ assertEquals(2,classMapping.getIdentifierProperty().getColumnSpan());
+
+ Property identifierProperty = classMapping.getIdentifierProperty();
+ assertEquals("customOrderId", identifierProperty.getName());
+
+ classMapping = cfg.getClassMapping("MiscTypes");
+ sv = (SimpleValue) classMapping.getIdentifier();
+ assertEquals("sequence", sv.getIdentifierGeneratorStrategy()); // will fail if default schema is not set since then there is no match in the override binder
+
assertNotNull(sv.getIdentifierGeneratorProperties());
assertEquals("seq_table", sv.getIdentifierGeneratorProperties().getProperty("table"));
- assertEquals(2,classMapping.getIdentifierProperty().getColumnSpan());
- Property identifierProperty = classMapping.getIdentifierProperty();
- assertEquals("customOrderId", identifierProperty.getName());
}
@@ -303,9 +319,9 @@
or.addTypeMapping(sqltype);
ReverseEngineeringStrategy res = or.getReverseEngineeringStrategy(null);
- assertEquals("boolean",res.columnToHibernateTypeName(null,null, Types.BINARY, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals(null,res.columnToHibernateTypeName(null,null, Types.LONGVARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
- assertEquals("yes_no",res.columnToHibernateTypeName(null,null, Types.BIT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false) );
+ assertEquals("boolean",res.columnToHibernateTypeName(null,null, Types.BINARY, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals(null,res.columnToHibernateTypeName(null,null, Types.LONGVARCHAR, 1, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
+ assertEquals("yes_no",res.columnToHibernateTypeName(null,null, Types.BIT, SQLTypeMapping.UNKNOWN_LENGTH, SQLTypeMapping.UNKNOWN_PRECISION, SQLTypeMapping.UNKNOWN_SCALE, false, false) );
}
public void testTableExclude() {
@@ -384,7 +400,7 @@
PersistentClass classMapping = cfg.getClassMapping("MiscTypes");
- assertEquals("long", getPropertyTypeName(classMapping.getIdentifierProperty() ) );
+
assertEquals("SomeUserType", getPropertyTypeName(classMapping.getProperty("name") ) );
assertEquals("string", getPropertyTypeName(classMapping.getProperty("shortname") ) );
assertEquals("yes_no", getPropertyTypeName(classMapping.getProperty("flag") ) );
Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/overridetest.reveng.xml
===================================================================
--- trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/overridetest.reveng.xml 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/test/jdbc2cfg/overridetest.reveng.xml 2006-03-31 15:41:05 UTC (rev 9723)
@@ -46,9 +46,6 @@
-->
<table name="ORDERS">
<primary-key property="customOrderId" composite-id-class="CustomOID">
- <generator class="sequence">
- <param name="table">seq_table</param>
- </generator>
<!-- <column name="CUSTID" foreign-table="CUSTOMER" foreign-column="CUSTID" /> -->
<key-column name="ORDERID"/>
<key-column name="CUSTID"/>
@@ -60,7 +57,14 @@
</foreign-key>
</table>
-
+ <table name="MISC_TYPES">
+ <primary-key>
+ <generator class="sequence">
+ <param name="table">seq_table</param>
+ </generator>
+ </primary-key>
+ </table>
+
<table name="CHILDREN">
<foreign-key constraint-name="child_to_parent" foreign-table="PARENT">
<column-ref local-column="parentid" foreign-column="id" />
Modified: trunk/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java
===================================================================
--- trunk/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java 2006-03-31 14:26:37 UTC (rev 9722)
+++ trunk/HibernateExt/tools/src/testsupport/NoopReverseEngineeringStrategy.java 2006-03-31 15:41:05 UTC (rev 9723)
@@ -40,7 +40,7 @@
return false;
}
- public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable) {
+ public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
// TODO Auto-generated method stub
return null;
}
|