mpoeschl 2003/12/03 11:05:08 Modified: src/generator/src/test/org/apache/torque/engine/database/model domaintest-schema.xml DomainTest.java src/generator/src/java/org/apache/torque/engine/database/model Column.java Log: get sql type from platform impl when loading columns Revision Changes Path 1.4 +3 -0 db-torque/src/generator/src/test/org/apache/torque/engine/database/model/domaintest-schema.xml Index: domaintest-schema.xml =================================================================== RCS file: /home/cvs/db-torque/src/generator/src/test/org/apache/torque/engine/database/model/domaintest-schema.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- domaintest-schema.xml 18 Nov 2003 17:59:59 -0000 1.3 +++ domaintest-schema.xml 3 Dec 2003 19:05:08 -0000 1.4 @@ -14,6 +14,9 @@ <column name="article_id" required="true" primaryKey="true" type="INTEGER" /> <column name="name" size="40" /> <column name="price" domain="amount" size="12" default="1000" /> + <column name="note" type="VARCHAR" size="50" default="default note" /> + <column name="decimal_col" type="DECIMAL" size="10" scale="3" /> + <column name="date_col" type="DATE"/> </table> </database> 1.5 +26 -1 db-torque/src/generator/src/test/org/apache/torque/engine/database/model/DomainTest.java Index: DomainTest.java =================================================================== RCS file: /home/cvs/db-torque/src/generator/src/test/org/apache/torque/engine/database/model/DomainTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DomainTest.java 18 Nov 2003 17:59:59 -0000 1.4 +++ DomainTest.java 3 Dec 2003 19:05:08 -0000 1.5 @@ -95,6 +95,7 @@ { Domain amount = db.getDomain("amount"); assertEquals(SchemaType.NUMERIC, amount.getType()); + assertEquals("DECIMAL", amount.getSqlType()); assertEquals("10", amount.getSize()); assertEquals("2", amount.getScale()); assertEquals("0", amount.getDefaultValue()); @@ -109,10 +110,12 @@ Table table = db.getTable("product"); Column name = table.getColumn("name"); assertEquals("VARCHAR", name.getType()); + assertEquals("VARCHAR", name.getDomain().getSqlType()); assertEquals("40", name.getSize()); Column price = table.getColumn("price"); assertEquals("NUMERIC", price.getTorqueType()); assertEquals("NUMERIC", price.getType()); + assertEquals("DECIMAL", price.getDomain().getSqlType()); assertEquals("10", price.getSize()); assertEquals("2", price.getScale()); assertEquals("0", price.getDefaultValue()); @@ -128,10 +131,32 @@ Column price = table.getColumn("price"); assertEquals("NUMERIC", price.getTorqueType()); assertEquals("NUMERIC", price.getType()); + assertEquals("DECIMAL", price.getDomain().getSqlType()); assertEquals("12", price.getSize()); assertEquals("2", price.getScale()); assertEquals("1000", price.getDefaultValue()); assertEquals("(12,2)", price.printSize()); } + public void testDecimalColumn() throws Exception + { + Table table = db.getTable("article"); + Column col = table.getColumn("decimal_col"); + assertEquals("DECIMAL", col.getTorqueType()); + assertEquals("DECIMAL", col.getType()); + assertEquals("DECIMAL", col.getDomain().getSqlType()); + assertEquals("10", col.getSize()); + assertEquals("3", col.getScale()); + assertEquals("(10,3)", col.printSize()); + } + + public void testDateColumn() throws Exception + { + Table table = db.getTable("article"); + Column col = table.getColumn("date_col"); + assertEquals("DATE", col.getTorqueType()); + assertEquals("DATE", col.getType()); + assertEquals("DATETIME", col.getDomain().getSqlType()); + assertEquals("", col.printSize()); + } } 1.16 +55 -30 db-torque/src/generator/src/java/org/apache/torque/engine/database/model/Column.java Index: Column.java =================================================================== RCS file: /home/cvs/db-torque/src/generator/src/java/org/apache/torque/engine/database/model/Column.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- Column.java 1 Dec 2003 16:56:30 -0000 1.15 +++ Column.java 3 Dec 2003 19:05:08 -0000 1.16 @@ -59,12 +59,11 @@ import java.util.List; import org.apache.commons.lang.StringUtils; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.apache.torque.engine.EngineException; - +import org.apache.torque.engine.platform.Platform; +import org.apache.torque.engine.platform.PlatformDefaultImpl; import org.xml.sax.Attributes; /** @@ -80,7 +79,7 @@ */ public class Column { - private static final String DEFAULT_TYPE = "VARCHAR"; + private static final SchemaType DEFAULT_TYPE = SchemaType.VARCHAR; /** Logging class from commons.logging */ private static Log log = LogFactory.getLog(Column.class); private String name; @@ -166,8 +165,8 @@ } else { - domain = new Domain(); - domain.setType(DEFAULT_TYPE); + domain = new Domain(getPlatform().getDomainForSchemaType(DEFAULT_TYPE)); + setType(attrib.getValue("type")); } //Name name = attrib.getValue("name"); @@ -214,8 +213,6 @@ domain.replaceSize(attrib.getValue("size")); domain.replaceScale(attrib.getValue("scale")); - domain.replaceType(attrib.getValue("type")); - inheritanceType = attrib.getValue("inheritance"); isInheritance = (inheritanceType != null && !inheritanceType.equals("false")); @@ -571,18 +568,33 @@ } /** - * Returns the colunm type + * Sets the colunm type */ public void setType(String torqueType) { - domain.setType(torqueType); - if (torqueType.equals("VARBINARY") || torqueType.equals("BLOB")) + SchemaType type = SchemaType.getEnum(torqueType); + if (type == null) { - needsTransactionInPostgres = true; + log.warn("SchemaType " + torqueType + " does not exist"); + type = this.DEFAULT_TYPE; } + setType(type); } /** + * Sets the colunm type + */ + public void setType(SchemaType torqueType) + { + domain = new Domain(getPlatform().getDomainForSchemaType(torqueType)); + if (torqueType.equals(SchemaType.VARBINARY) + || torqueType.equals(SchemaType.BLOB)) + { + needsTransactionInPostgres = true; + } + } + + /** * Returns the column jdbc type as an object */ public Object getType() @@ -728,26 +740,10 @@ /** * Return a string that will give this column a default value. - * <p> - * TODO: Properly SQL-escape text values. */ public String getDefaultSetting() { - StringBuffer dflt = new StringBuffer(0); - if (domain.getDefaultValue() != null) - { - dflt.append("default "); - if (TypeMap.isTextType(domain.getType())) - { - // TODO: Properly SQL-escape the text. - dflt.append('\'').append(domain.getDefaultValue()).append('\''); - } - else - { - dflt.append(domain.getDefaultValue()); - } - } - return dflt.toString(); + return domain.getDefaultSetting(); } /** @@ -942,5 +938,34 @@ return (s != null && s.equals("primitive")) || (s == null && !"object".equals( getTable().getDatabase().getDefaultJavaType())); + } + + /** + * @return Returns the domain. + */ + public Domain getDomain() + { + return domain; + } + + /** + * @param domain The domain to set. + */ + public void setDomain(Domain domain) + { + this.domain = domain; + } + + private Platform getPlatform() + { + try + { + return getTable().getDatabase().getPlatform(); + } + catch (Exception ex) + { + log.warn("could not load platform implementation"); + } + return new PlatformDefaultImpl(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]