hammant 01/11/13 18:40:29 Modified: apps/db/src/java/org/apache/avalon/db/basic/actions BasicCreateQueryable.java Log: updated type handling Revision Changes Path 1.5 +37 -13 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateQueryable.java Index: BasicCreateQueryable.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateQueryable.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- BasicCreateQueryable.java 2001/11/13 09:25:42 1.4 +++ BasicCreateQueryable.java 2001/11/14 02:40:29 1.5 @@ -16,6 +16,13 @@ import org.apache.avalon.db.data.impl.AbstractColumn; import org.apache.avalon.db.data.impl.VarCharColumn; import org.apache.avalon.db.data.impl.IntegerColumn; +import org.apache.avalon.db.data.impl.DateColumn; +import org.apache.avalon.db.data.impl.TimeColumn; +import org.apache.avalon.db.data.impl.TimestampColumn; +import org.apache.avalon.db.data.impl.SmallIntColumn; +import org.apache.avalon.db.data.impl.RealColumn; +import org.apache.avalon.db.data.impl.BigIntColumn; +import org.apache.avalon.db.data.impl.DecimalColumn; import org.apache.avalon.db.basic.data.BasicTable; import org.apache.avalon.db.services.DatabasePersistor; import org.w3c.dom.Element; @@ -30,7 +37,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.4 $ + * @version $Revision: 1.5 $ */ public abstract class BasicCreateQueryable extends AbstractAction implements CreateTable { @@ -51,17 +58,7 @@ NodeList subColumnsNodes = subRootNodes.item(f).getChildNodes(); for (int x = 0 ; x < subColumnsNodes.getLength(); x++) { if (subColumnsNodes.item(x).getNodeName().equals("column")) { - Node columnNode = subColumnsNodes.item(x); - String fieldName = columnNode.getAttributes().getNamedItem("name").getNodeValue(); - String sqlFieldType = columnNode.getAttributes().getNamedItem("type").getNodeValue(); - Column column = null; - if (sqlFieldType.equals("varchar")) { - int maxLength = Integer.parseInt(columnNode.getAttributes().getNamedItem("max").getNodeValue()); - column= new VarCharColumn(fieldName, maxLength); - } else if (sqlFieldType.equals("integer")) { - column= new IntegerColumn(fieldName); - } - columns.add(column); + columns.add(createColumn(subColumnsNodes.item(x))); } else { // TODO There should be no other element types inside <columns> } @@ -80,5 +77,32 @@ } - + protected Column createColumn(Node columnNode) throws ActionException { + String sqlFieldType = columnNode.getAttributes().getNamedItem("type").getNodeValue(); + String fieldName = columnNode.getAttributes().getNamedItem("name").getNodeValue(); + Column column = null; + if (sqlFieldType.equals("varchar")) { + int maxLength = Integer.parseInt(columnNode.getAttributes().getNamedItem("max").getNodeValue()); + column= new VarCharColumn(fieldName, maxLength); + } else if (sqlFieldType.equals("integer")) { + column= new IntegerColumn(fieldName); + } else if (sqlFieldType.equals("date")) { + column= new DateColumn(fieldName); + } else if (sqlFieldType.equals("time")) { + column= new TimeColumn(fieldName); + } else if (sqlFieldType.equals("timestamp")) { + column= new TimestampColumn(fieldName); + } else if (sqlFieldType.equals("smallint")) { + column= new SmallIntColumn(fieldName); + } else if (sqlFieldType.equals("real")) { + column= new RealColumn(fieldName); + } else if (sqlFieldType.equals("bigint")) { + column= new BigIntColumn(fieldName); + } else if (sqlFieldType.equals("decimal")) { + column= new DecimalColumn(fieldName); + } else { + throw new ActionException("Column type " + sqlFieldType + " not recognised"); + } + return column; + } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>