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/10/31 15:42:14 UTC

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

hammant     01/10/31 06:42:14

  Modified:    apps/db/src/java/org/apache/avalon/db/bcel/actions
                        BCELCreateTable.java
               apps/db/src/java/org/apache/avalon/db/bcel/parser
                        BCELSQLParser.java
               apps/db/src/java/org/apache/avalon/db/data/impl
                        AbstractRowHolder.java AbstractTable.java
                        DefaultTable.java
               apps/db/src/java/org/apache/avalon/db/server
                        AbstractDatabaseManager.java
  Added:       apps/db/src/java/org/apache/avalon/db/bcel/data
                        BCELTable.java
  Log:
  generated classes have different names to their table names now.
  
  Revision  Changes    Path
  1.2       +15 -6     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/BCELCreateTable.java
  
  Index: BCELCreateTable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/BCELCreateTable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BCELCreateTable.java	2001/10/31 12:43:23	1.1
  +++ BCELCreateTable.java	2001/10/31 14:42:14	1.2
  @@ -14,20 +14,26 @@
   import org.apache.avalon.db.actions.ActionException;
   import org.apache.avalon.db.services.DatabasePersistor;
   import org.apache.avalon.db.data.Table;
  +import org.apache.avalon.db.data.Row;
  +import org.apache.avalon.db.data.Column;
  +import org.apache.avalon.db.bcel.data.BCELTable;
   import org.apache.bcel.classfile.JavaClass;
   
  +import java.util.Vector;
   
  +
   /**
    * Class BCELCreateTable
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public class BCELCreateTable extends AbstractBCELAction implements CreateTable {
   
  -    private JavaClass mPendingClass;
  +    private JavaClass mPendingRowClass;
       private String mTableName;
  +    private Vector mColumns;
       private int mRecordCount;
   
       /**
  @@ -38,9 +44,10 @@
        * @param tableName
        *
        */
  -    public BCELCreateTable(JavaClass pendingClass, String tableName) {
  -        mPendingClass = pendingClass;
  +    public BCELCreateTable(JavaClass pendingRowClass, String tableName, Vector columns) {
  +        mPendingRowClass = pendingRowClass;
           mTableName = tableName;
  +        mColumns = columns;
       }
   
   
  @@ -54,9 +61,11 @@
           if (mDatabasePersistor.tableExists(mTableName)) {
               throw new ActionException("Table " + mTableName + " Already Exists");
           }
  -        byte[] bytes = mPendingClass.getBytes();
  +
  +        byte[] bytes = mPendingRowClass.getBytes();
           mBCELSQLParser.addGeneratedClass(mTableName, bytes);
  -        Table table = (Table) mBCELSQLParser.getGeneratedInstance(mTableName);
  +        Class rowClass = mBCELSQLParser.getGeneratedClass(mTableName);
  +        Table table = new BCELTable(mTableName, (Column[]) mColumns.toArray(), rowClass);
           mDatabasePersistor.addTable(mTableName, table);
       }
   
  
  
  
  1.1                  jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/data/BCELTable.java
  
  Index: BCELTable.java
  ===================================================================
  /*
   * Created by IntelliJ IDEA.
   * User: Administrator
   * Date: Oct 31, 2001
   * Time: 1:00:35 PM
   * To change template for new class use 
   * Code Style | Class Templates options (Tools | IDE Options).
   */
  package org.apache.avalon.db.bcel.data;
  
  import org.apache.avalon.db.data.impl.DefaultTable;
  import org.apache.avalon.db.data.Column;
  
  public class BCELTable extends DefaultTable {
  
      protected Class mRowClass;
  
      public BCELTable(String name, Column[] columns, Class rowClass) {
          super(name, columns);
          mRowClass = rowClass;
      }
  }
  
  
  
  1.2       +30 -7     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELSQLParser.java
  
  Index: BCELSQLParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELSQLParser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BCELSQLParser.java	2001/10/31 12:43:23	1.1
  +++ BCELSQLParser.java	2001/10/31 14:42:14	1.2
  @@ -22,6 +22,7 @@
   import org.apache.avalon.db.transport.InsertRequest;
   import org.apache.avalon.db.bcel.actions.BCELCreateTable;
   import org.apache.avalon.db.bcel.actions.BCELInsertSingleValue;
  +import org.apache.avalon.db.bcel.data.BCELTable;
   import org.apache.avalon.db.data.Table;
   import org.apache.avalon.db.data.Column;
   import org.apache.avalon.db.data.impl.DefaultColumn;
  @@ -38,7 +39,13 @@
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.bcel.Constants;
  -import org.apache.bcel.generic.*;
  +import org.apache.bcel.generic.ConstantPoolGen;
  +import org.apache.bcel.generic.Type;
  +import org.apache.bcel.generic.ClassGen;
  +import org.apache.bcel.generic.FieldGen;
  +import org.apache.bcel.generic.InstructionList;
  +import org.apache.bcel.generic.MethodGen;
  +
   import org.apache.bcel.classfile.Field;
   
   import java.util.StringTokenizer;
  @@ -51,7 +58,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public class BCELSQLParser extends AbstractLoggable
           implements Block, SQLParser, Contextualizable, Composable, Configurable, Initializable {
  @@ -206,10 +213,11 @@
        */
       public CreateTable createCreateTableAction(CreateTableRequest request) {
   
  -        String table = getWordThree(request.getSql());
  +        String tableName = getWordThree(request.getSql());
           String values = getBracketedExpr(request.getSql());
           StringTokenizer st = new StringTokenizer(values, ",");
  -        ClassGen cg = new ClassGen(table + "Row",
  +        String newTableClassName = createUniqueClassName(tableName);
  +        ClassGen cg = new ClassGen(newTableClassName,
                                      "org.apache.avalon.db.data.impl.AbstractTableRow",
                                      "<SQL Generated>", Constants.ACC_PUBLIC | Constants.ACC_SUPER,
                                      null);
  @@ -229,17 +237,17 @@
   
               columns.add(column);
               createField(cp, cg, fieldType, fieldName);
  -            createSetter(cp, cg, fieldType, fieldName, table);
  +            createSetter(cp, cg, fieldType, fieldName, tableName);
           }
   
           //TODO need to create constrcutor suitable for superclass.
           try {
  -            cg.getJavaClass().dump(table + "Row.class");
  +            cg.getJavaClass().dump(tableName + "Row.class");
           } catch (java.io.IOException e) {
               System.err.println(e);
           }
   
  -        CreateTable action = new BCELCreateTable(cg.getJavaClass(), table);
  +        CreateTable action = new BCELCreateTable(cg.getJavaClass(), tableName, columns);
           action.setDatabasePersistor(mDatabasePersistor);
           return action;
       }
  @@ -333,8 +341,23 @@
       public void addGeneratedClass(String name, byte[] bytes) {
           mGenClassLoader.addGeneratedClass(name, bytes);
       }
  +
       public Object getGeneratedInstance(String name) {
           return mGenClassLoader.getGeneratedInstance(name);
  +    }
  +
  +    public Class getGeneratedClass(String name) {
  +        return mGenClassLoader.findClass(name);
  +    }
  +
  +    public String createUniqueClassName(String sqlObjectName){
  +        String className = "gen.A" + mGenObjSeq++;
  +        mGeneratedObjTranslation.put(sqlObjectName, className);
  +        return className;
  +    }
  +
  +    public String getGeneratedClassName(String sqlObjectName){
  +        return (String) mGeneratedObjTranslation.get(sqlObjectName);
       }
   
   
  
  
  
  1.2       +4 -6      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractRowHolder.java
  
  Index: AbstractRowHolder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractRowHolder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractRowHolder.java	2001/10/30 17:45:14	1.1
  +++ AbstractRowHolder.java	2001/10/31 14:42:14	1.2
  @@ -22,29 +22,27 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public abstract class AbstractRowHolder implements RowHolder {
   
       private String mName;
  -    private Column[] mColumns;
  -    private Vector mRows = new Vector();
  -    private Class mRowClass;
  +    protected Column[] mColumns;
  +    protected Vector mRows = new Vector();
   
  +
       /**
        * Constructor AbstractRowHolder
        *
        *
        * @param name
        * @param columns
  -     * @param rowClass
        *
        */
  -    public AbstractRowHolder(String name, Column[] columns, Class rowClass) {
  +    public AbstractRowHolder(String name, Column[] columns) {
   
           mName = name;
           mColumns = columns;
  -        mRowClass = rowClass;
       }
   
       /**
  
  
  
  1.2       +2 -2      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractTable.java
  
  Index: AbstractTable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractTable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractTable.java	2001/10/30 17:45:14	1.1
  +++ AbstractTable.java	2001/10/31 14:42:14	1.2
  @@ -20,7 +20,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public abstract class AbstractTable extends AbstractRowHolder implements Table {
   
  @@ -33,7 +33,7 @@
        * @param rowClass
        *
        */
  -    public AbstractTable(String name, Column[] columns, Class rowClass) {
  -        super(name, columns, rowClass);
  +    public AbstractTable(String name, Column[] columns) {
  +        super(name, columns);
       }
   }
  
  
  
  1.2       +2 -2      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultTable.java
  
  Index: DefaultTable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultTable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultTable.java	2001/10/31 12:38:01	1.1
  +++ DefaultTable.java	2001/10/31 14:42:14	1.2
  @@ -22,7 +22,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public class DefaultTable extends AbstractTable {
   
  @@ -37,8 +37,8 @@
        * @param rowClass
        *
        */
  -    public DefaultTable(String name, Column[] columns, Class rowClass) {
  -        super(name, columns, rowClass);
  +    public DefaultTable(String name, Column[] columns) {
  +        super(name, columns);
       }
   
       public void addRow(AbstractTableRow atr) {
  
  
  
  1.7       +10 -2     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java
  
  Index: AbstractDatabaseManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractDatabaseManager.java	2001/10/31 09:39:53	1.6
  +++ AbstractDatabaseManager.java	2001/10/31 14:42:14	1.7
  @@ -14,10 +14,18 @@
   import org.apache.avalon.db.services.SQLParser;
   import org.apache.avalon.db.services.SQLOptimizer;
   import org.apache.avalon.db.services.DatabasePersistor;
  -import org.apache.avalon.db.transport.*;
  +
   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.transport.Request;
  +import org.apache.avalon.db.transport.Reply;
  +import org.apache.avalon.db.transport.SelectRequest;
  +import org.apache.avalon.db.transport.CreateTableRequest;
  +import org.apache.avalon.db.transport.ExceptionReply;
  +import org.apache.avalon.db.transport.UnknownRequestReply;
  +import org.apache.avalon.db.transport.UpdateReply;
  +import org.apache.avalon.db.transport.ResultSetReply;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -28,7 +36,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.6 $
  + * @version $Revision: 1.7 $
    */
   public abstract class AbstractDatabaseManager extends AbstractLoggable {
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>