hammant 01/11/07 04:24:20 Modified: apps/db/src/java/org/apache/avalon/db/basic/data BasicTable.java apps/db/src/java/org/apache/avalon/db/bcel/actions AbstractBCELAction.java apps/db/src/java/org/apache/avalon/db/server AbstractParser.java Added: apps/db/src/java/org/apache/avalon/db/actions/impl AbstractAction.java apps/db/src/java/org/apache/avalon/db/basic/actions BasicCreateTable.java apps/db/src/java/org/apache/avalon/db/basic/parser LXSQLParser.java Log: Refactoring and start of Basic Action impl Revision Changes Path 1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actions/impl/AbstractAction.java Index: AbstractAction.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.db.actions.impl; import org.apache.avalon.db.services.DatabasePersistor; public class AbstractAction { protected DatabasePersistor mDatabasePersistor; public void setDatabasePersistor(DatabasePersistor databasePersistor) { mDatabasePersistor = databasePersistor; } } 1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateTable.java Index: BasicCreateTable.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.db.basic.actions; import org.apache.avalon.db.actions.CreateTable; import org.apache.avalon.db.actions.ActionException; import org.apache.avalon.db.actions.impl.AbstractAction; import org.apache.avalon.db.data.Column; import org.apache.avalon.db.data.Table; import org.apache.avalon.db.basic.data.BasicTable; import java.util.Vector; /** * Class BCELCreateTable * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> * @version $Revision: 1.7 $ */ public class BasicCreateTable extends AbstractAction implements CreateTable { private String mTableName; private Column[] mColumns; private int mRecordCount; /** * Constructor BCELCreateTable * * * @param pendingClass * @param tableName * */ public BasicCreateTable(String tableName, Vector columns) { mTableName = tableName; mColumns = new Column[columns.size()]; columns.toArray(mColumns); } /** * Method execute * * */ public void execute() throws ActionException { System.out.println("ct execute"); /* if (mDatabasePersistor.tableExists(mTableName)) { throw new ActionException("Table " + mTableName + " Already Exists"); } */ Table table = new BasicTable(mTableName, mColumns); mDatabasePersistor.addTable(mTableName, table); } public int getRecordCount() { return mRecordCount; } } 1.2 +1 -3 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/data/BasicTable.java Index: BasicTable.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/data/BasicTable.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BasicTable.java 2001/11/07 12:01:14 1.1 +++ BasicTable.java 2001/11/07 12:24:20 1.2 @@ -12,11 +12,9 @@ public class BasicTable extends AbstractTable { - protected Class mRowClass; - public BasicTable(String name, Column[] columns, Class rowClass) { + public BasicTable(String name, Column[] columns) { super(name, columns); - mRowClass = rowClass; } 1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/parser/LXSQLParser.java Index: LXSQLParser.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.db.basic.parser; import org.apache.avalon.db.server.AbstractLXSQLParser; import org.apache.avalon.db.actions.Select; import org.apache.avalon.db.actions.ActionException; import org.apache.avalon.db.actions.CreateTable; import org.apache.avalon.db.actions.Insert; import org.apache.avalon.db.transport.SelectRequest; import org.apache.avalon.db.transport.CreateTableRequest; import org.apache.avalon.db.transport.InsertRequest; import org.apache.avalon.db.data.Column; import org.apache.avalon.db.data.impl.DefaultColumn; import org.apache.avalon.db.bcel.actions.AbstractBCELAction; import org.apache.avalon.db.basic.actions.BasicCreateTable; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; import org.apache.bcel.generic.InstructionFactory; import org.apache.bcel.generic.ConstantPoolGen; import org.apache.bcel.generic.ClassGen; import org.apache.bcel.generic.Type; import org.apache.bcel.Constants; import org.w3c.dom.Element; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import java.util.Vector; /** * Class BCELSQLParser * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> * @version $Revision: 1.14 $ */ public class LXSQLParser extends AbstractLXSQLParser { /** * Method createSelectAction * * * @param request * * @return * */ public Select createSelectAction(SelectRequest request) throws ActionException { // TODO return null; } /** * Method createCreateTableAction * * * @param request * * @return * */ public CreateTable createCreateTableAction(CreateTableRequest request) throws ActionException { Document doc = parseLXSQLString(request.getSql()); Element rootElement = doc.getDocumentElement(); getLogger().debug("rootElement=" + rootElement.getTagName()); String tableName = rootElement.getAttribute("name"); NodeList subRootNodes = rootElement.getChildNodes(); Vector columns = new Vector(); for (int f = 0 ; f < subRootNodes.getLength(); f++) { if (subRootNodes.item(f).getNodeName().equals("columns")) { 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(); String fieldType = getJavaType(sqlFieldType).toString(); Column column = new DefaultColumn(fieldName, sqlFieldType, fieldType); columns.add(column); } else { // TODO There should be no other element types inside <columns> } } } else { //TODO Only <columns> is supported in <create-table> so far } } //TODO need to create constrcutor suitable for superclass. CreateTable action = new BasicCreateTable(tableName, columns); action.setDatabasePersistor(mDatabasePersistor); return action; } /** * Method createInsertAction * * * @param request * * @return * */ public Insert createInsertAction(InsertRequest request) throws ActionException { // TODO return null; } } 1.5 +2 -6 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/AbstractBCELAction.java Index: AbstractBCELAction.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/AbstractBCELAction.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- AbstractBCELAction.java 2001/11/07 12:01:14 1.4 +++ AbstractBCELAction.java 2001/11/07 12:24:20 1.5 @@ -7,17 +7,13 @@ */ package org.apache.avalon.db.bcel.actions; -import org.apache.avalon.db.services.DatabasePersistor; import org.apache.avalon.db.bcel.parser.BCELHelper; +import org.apache.avalon.db.actions.impl.AbstractAction; -public class AbstractBCELAction { +public class AbstractBCELAction extends AbstractAction { - protected DatabasePersistor mDatabasePersistor; protected BCELHelper mBCELHelper; - public void setDatabasePersistor(DatabasePersistor databasePersistor) { - mDatabasePersistor = databasePersistor; - } public void setBCELHelper(BCELHelper bcelHelper) { mBCELHelper = bcelHelper; } 1.2 +14 -0 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java Index: AbstractParser.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractParser.java 2001/11/07 12:01:14 1.1 +++ AbstractParser.java 2001/11/07 12:24:20 1.2 @@ -23,6 +23,7 @@ import org.apache.avalon.db.services.SQLParser; import org.apache.avalon.db.services.DatabasePersistor; import org.apache.avalon.db.bcel.parser.GeneratedObjectClassLoader; +import org.apache.avalon.db.actions.ActionException; import java.util.HashMap; @@ -83,6 +84,19 @@ } + + protected Class getJavaType(String sqlType) throws ActionException { + + System.out.println("Type=(" + sqlType + ")"); + + if (sqlType.equals("varchar")) { + return String.class; + } else if (sqlType.equals("char")) { + return String.class; + } + + throw new ActionException("Type " + sqlType + " not supported yet"); + } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>