You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by ha...@apache.org on 2001/11/07 13:24:20 UTC

cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server AbstractParser.java

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:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</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:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>