Author: tomdz Date: Wed Nov 9 11:41:33 2005 New Revision: 332124 URL: http://svn.apache.org/viewcvs?rev=332124&view=rev Log: Added read-support for the Torque/Turbine extensions BOOLEANINT/BOOLEANCHAR
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java db/ddlutils/trunk/src/java/org/apache/ddlutils/model/TypeMap.java db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatabaseIO.java Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java?rev=332124&r1=332123&r2=332124&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/model/Column.java Wed Nov 9 11:41:33 2005 @@ -233,8 +233,10 @@ else { _typeCode = typeCode.intValue(); + // we get the corresponding string value from the TypeMap in order + // to detect extension types which we don't want in the model + _type = TypeMap.getJdbcTypeName(_typeCode); } - _type = type; } /** Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/model/TypeMap.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/model/TypeMap.java?rev=332124&r1=332123&r2=332124&view=diff ============================================================================== --- db/ddlutils/trunk/src/java/org/apache/ddlutils/model/TypeMap.java (original) +++ db/ddlutils/trunk/src/java/org/apache/ddlutils/model/TypeMap.java Wed Nov 9 11:41:33 2005 @@ -144,6 +144,10 @@ registerJdbcType(Jdbc3Utils.determineBooleanTypeCode(), BOOLEAN, true, false, false, false); registerJdbcType(Jdbc3Utils.determineDatalinkTypeCode(), DATALINK, false, false, false, true); } + + // Torque/Turbine extensions which we only support when reading from an XML schema + _typeNameToTypeCode.put("BOOLEANINT", new Integer(Types.TINYINT)); + _typeNameToTypeCode.put("BOOLEANCHAR", new Integer(Types.CHAR)); } /** Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatabaseIO.java URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatabaseIO.java?rev=332124&r1=332123&r2=332124&view=diff ============================================================================== --- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatabaseIO.java (original) +++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatabaseIO.java Wed Nov 9 11:41:33 2005 @@ -1261,6 +1261,78 @@ System.out.println("Table : " + Arrays.asList(database.getTables())); assertEquals(0, database.getTableCount()); } + + /** + * Tests the Torque/Turbine extensions BOOLEANINT & BOOLEANCHAR. + */ + public void testTurbineExtension() throws Exception + { + Database model = readModel( + "<database name='test'>\n" + + " <table name='SomeTable'>\n" + + " <column name='intField'\n" + + " type='BOOLEANINT'/>\n" + + " <column name='charField'\n" + + " type='BOOLEANCHAR'/>\n" + + " </table>\n" + + "</database>"); + + assertEquals("test", + model.getName()); + assertEquals(1, + model.getTableCount()); + + Table table = model.getTable(0); + + assertEquals("SomeTable", + table.getName()); + assertNull(table.getDescription()); + assertEquals(0, table.getAutoIncrementColumns().length); + assertEquals(2, + table.getColumnCount()); + assertEquals(0, + table.getForeignKeyCount()); + assertEquals(0, + table.getIndexCount()); + + Column column = table.getColumn(0); + + assertEquals("intField", + column.getName()); + assertEquals("TINYINT", + column.getType()); + assertEquals(Types.TINYINT, + column.getTypeCode()); + assertFalse(column.isPrimaryKey()); + assertFalse(column.isRequired()); + assertFalse(column.isAutoIncrement()); + assertNull(column.getDefaultValue()); + assertNull(column.getDescription()); + + column = table.getColumn(1); + + assertEquals("charField", + column.getName()); + assertEquals("CHAR", + column.getType()); + assertEquals(Types.CHAR, + column.getTypeCode()); + assertFalse(column.isPrimaryKey()); + assertFalse(column.isRequired()); + assertFalse(column.isAutoIncrement()); + assertNull(column.getDefaultValue()); + assertNull(column.getDescription()); + + assertEquals( + " <database name=\"test\">\n" + + " <table name=\"SomeTable\">\n" + + " <column name=\"intField\" primaryKey=\"false\" required=\"false\" type=\"TINYINT\" autoIncrement=\"false\"/>\n" + + " <column name=\"charField\" primaryKey=\"false\" required=\"false\" type=\"CHAR\" autoIncrement=\"false\"/>\n" + + " </table>\n" + + " </database>\n", + writeModel(model)); + } + // TODO: Tests that include: // * foreign key references undefined table // * foreign key references undefined local column