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/09 14:55:34 UTC

cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport CreateViewRequest.java Request.java

hammant     01/11/09 05:55:34

  Modified:    apps/db/src/java/org/apache/avalon/db/actions
                        CreateTable.java
               apps/db/src/java/org/apache/avalon/db/basic/actions
                        BasicCreateView.java
               apps/db/src/java/org/apache/avalon/db/basic/parser
                        BasicLXSQLParser.java
               apps/db/src/java/org/apache/avalon/db/bcel/parser
                        BCELLXSQLParser.java BCELSQLParser.java
               apps/db/src/java/org/apache/avalon/db/driver/lxsql
                        LXSQLParserHelper.java
               apps/db/src/java/org/apache/avalon/db/server
                        AbstractDatabaseManager.java
               apps/db/src/java/org/apache/avalon/db/services
                        SQLParser.java
               apps/db/src/java/org/apache/avalon/db/transport Request.java
  Added:       apps/db/src/java/org/apache/avalon/db/actioncache
                        package.html
               apps/db/src/java/org/apache/avalon/db/actions
                        CreateView.java
               apps/db/src/java/org/apache/avalon/db/transport
                        CreateViewRequest.java
  Log:
  CreateView logic
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actioncache/package.html
  
  Index: package.html
  ===================================================================
  <html>
  <body>
  <p>
  What we are hoping will exist here is a cache that can be used for retrieval of Actions that are suitable for given SQL statements.</p>
  <p>
  E.g.<br/>
  <br/>
    SELECT * FROM Flintstones WHERE surname = 'Rubble'</p>
  <p>
  The idea is that an Action may be created for that, albeit simple, statement and that suitable candidates in the future may shortcut the parsing process and retrieve the action from the cache.</p>
  <p>
  The white-space cleaned statement would be used as the key for the cache.</p>
  <p>
  As a second possibility, we could could remove the "Rubble" and substitute "?" (just like prepared statements) and have that more general case cached.</p>
  <p>
  - Paul H
  </p>
  </body>
  </html>
  
  
  
  1.2       +1 -1      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actions/CreateTable.java
  
  Index: CreateTable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actions/CreateTable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CreateTable.java	2001/10/28 20:57:39	1.1
  +++ CreateTable.java	2001/11/09 13:55:33	1.2
  @@ -11,11 +11,11 @@
   
   
   /**
  - * Interface Create
  + * Interface CreateTable
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version * $Revision: 1.1 $
  + * @version * $Revision: 1.2 $
    */
   public interface CreateTable extends Create {
   
  
  
  
  1.1                  jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actions/CreateView.java
  
  Index: CreateView.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;
  
  
  
  /**
   * Interface CreateView
   *
   *
   * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
   * @version * $Revision: 1.1 $
   */
  public interface CreateView extends Create {
  
  }
  
  
  
  1.5       +3 -3      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateView.java
  
  Index: BasicCreateView.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateView.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BasicCreateView.java	2001/11/09 13:16:48	1.4
  +++ BasicCreateView.java	2001/11/09 13:55:33	1.5
  @@ -8,8 +8,8 @@
    */
   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.CreateView;
   import org.apache.avalon.db.actions.impl.AbstractAction;
   import org.apache.avalon.db.data.Column;
   import org.apache.avalon.db.data.Table;
  @@ -29,9 +29,9 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.4 $
  + * @version $Revision: 1.5 $
    */
  -public class BasicCreateView extends BasicCreateRowHolder implements CreateTable {
  +public class BasicCreateView extends BasicCreateRowHolder implements CreateView {
   
       private String mViewName;
       private BasicSelect mBasicSelect;
  
  
  
  1.6       +26 -0     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/parser/BasicLXSQLParser.java
  
  Index: BasicLXSQLParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/parser/BasicLXSQLParser.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BasicLXSQLParser.java	2001/11/09 13:16:48	1.5
  +++ BasicLXSQLParser.java	2001/11/09 13:55:33	1.6
  @@ -13,15 +13,18 @@
   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.actions.CreateView;
   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.transport.CreateViewRequest;
   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.db.basic.actions.BasicInsert;
   import org.apache.avalon.db.basic.actions.BasicSelect;
  +import org.apache.avalon.db.basic.actions.BasicCreateView;
   import org.apache.avalon.db.basic.data.BasicTable;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -109,6 +112,29 @@
           action.setDatabasePersistor(mDatabasePersistor);
   
           return action;
  +    }
  +
  +
  +    /**
  +     * Method createCreateTableAction
  +     *
  +     *
  +     * @param request
  +     *
  +     * @return
  +     *
  +     */
  +    public CreateView createCreateViewAction(CreateViewRequest request) throws ActionException {
  +
  +        Document doc = parseLXSQLString(request.getSql());
  +
  +        Element rootElement = doc.getDocumentElement();
  +        String viewName = rootElement.getAttribute("name");
  +
  +        CreateView action = new BasicCreateView(viewName, doc);
  +        action.setDatabasePersistor(mDatabasePersistor);
  +        return action;
  +
       }
   
   }
  
  
  
  1.2       +6 -0      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELLXSQLParser.java
  
  Index: BCELLXSQLParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELLXSQLParser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BCELLXSQLParser.java	2001/11/07 13:28:35	1.1
  +++ BCELLXSQLParser.java	2001/11/09 13:55:33	1.2
  @@ -18,9 +18,11 @@
   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.actions.CreateView;
   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.transport.CreateViewRequest;
   import org.apache.avalon.db.data.Column;
   import org.apache.avalon.db.data.impl.DefaultColumn;
   import org.apache.avalon.framework.component.ComponentManager;
  @@ -180,6 +182,10 @@
   
           return action;
   
  +    }
  +
  +    public CreateView createCreateViewAction(CreateViewRequest request) throws ActionException {
  +        return null;  //TODO
       }
   
   }
  
  
  
  1.8       +6 -1      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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BCELSQLParser.java	2001/11/07 12:01:14	1.7
  +++ BCELSQLParser.java	2001/11/09 13:55:33	1.8
  @@ -13,9 +13,11 @@
   import org.apache.avalon.db.actions.Select;
   import org.apache.avalon.db.actions.CreateTable;
   import org.apache.avalon.db.actions.Insert;
  +import org.apache.avalon.db.actions.CreateView;
   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.transport.CreateViewRequest;
   import org.apache.avalon.db.utils.StringUtils;
   import org.apache.avalon.db.data.impl.DefaultColumn;
   import org.apache.avalon.db.data.Column;
  @@ -38,7 +40,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.7 $
  + * @version $Revision: 1.8 $
    */
   public class BCELSQLParser extends AbstractSQLParser {
   
  @@ -151,4 +153,7 @@
           return null;
       }
   
  +    public CreateView createCreateViewAction(CreateViewRequest request) throws ActionException {
  +        return null;    //TODO
  +    }
   }
  
  
  
  1.3       +4 -1      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/lxsql/LXSQLParserHelper.java
  
  Index: LXSQLParserHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/lxsql/LXSQLParserHelper.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LXSQLParserHelper.java	2001/11/04 22:43:04	1.2
  +++ LXSQLParserHelper.java	2001/11/09 13:55:33	1.3
  @@ -15,6 +15,7 @@
   import org.apache.avalon.db.transport.DeleteRequest;
   import org.apache.avalon.db.transport.SelectRequest;
   import org.apache.avalon.db.transport.CreateTableRequest;
  +import org.apache.avalon.db.transport.CreateViewRequest;
   
   import java.sql.SQLException;
   
  @@ -31,9 +32,11 @@
               request = new SelectRequest(sql);
           } else if (sql.startsWith("<create-table")) {
               request = new CreateTableRequest(sql);
  +        } else if (sql.startsWith("<create-view")) {
  +            request = new CreateViewRequest(sql);
               //TODO
           } else {
  -            throw new SQLException("Unknown SQL instuction (first term)");
  +            throw new SQLException("Unknown SQL instruction (first term)");
           }
           return request;
       }
  
  
  
  1.15      +12 -1     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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- AbstractDatabaseManager.java	2001/11/09 12:36:44	1.14
  +++ AbstractDatabaseManager.java	2001/11/09 13:55:34	1.15
  @@ -19,6 +19,7 @@
   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.actions.CreateView;
   import org.apache.avalon.db.transport.Request;
   import org.apache.avalon.db.transport.Reply;
   import org.apache.avalon.db.transport.SelectReply;
  @@ -29,6 +30,7 @@
   import org.apache.avalon.db.transport.UpdateReply;
   import org.apache.avalon.db.transport.ResultSetReply;
   import org.apache.avalon.db.transport.InsertRequest;
  +import org.apache.avalon.db.transport.CreateViewRequest;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -40,7 +42,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.14 $
  + * @version $Revision: 1.15 $
    */
   public abstract class AbstractDatabaseManager extends AbstractLoggable implements Composable {
   
  @@ -82,6 +84,8 @@
                       return processSelectRequest((SelectRequest) request);
                   case (Request.CREATETABLE) :
                       return processCreateTableRequest((CreateTableRequest) request);
  +                case (Request.CREATEVIEW) :
  +                    return processCreateViewRequest((CreateViewRequest) request);
                   case (Request.INSERT) :
                       return processInsertRequest((InsertRequest) request);
               }
  @@ -122,6 +126,13 @@
           ct.execute();
           return new UpdateReply(ct.getRecordCount());
       }
  +
  +    public Reply processCreateViewRequest(CreateViewRequest createViewRequest) throws ActionException {
  +        CreateView cv = mSQLParser.createCreateViewAction(createViewRequest);
  +        cv.execute();
  +        return new UpdateReply(cv.getRecordCount());
  +    }
  +
   
       public Reply processInsertRequest(InsertRequest insertRequest) throws ActionException {
           Insert ins = mSQLParser.createInsertAction(insertRequest);
  
  
  
  1.5       +5 -1      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/SQLParser.java
  
  Index: SQLParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/SQLParser.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SQLParser.java	2001/11/03 13:26:22	1.4
  +++ SQLParser.java	2001/11/09 13:55:34	1.5
  @@ -15,10 +15,12 @@
   import org.apache.avalon.db.actions.CreateTable;
   import org.apache.avalon.db.actions.Insert;
   import org.apache.avalon.db.actions.ActionException;
  +import org.apache.avalon.db.actions.CreateView;
   import org.apache.avalon.db.transport.Request;
   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.transport.CreateViewRequest;
   
   
   /**
  @@ -26,7 +28,7 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version * $Revision: 1.4 $
  + * @version * $Revision: 1.5 $
    */
   public interface SQLParser {
   
  @@ -64,4 +66,6 @@
        *
        */
       Insert createInsertAction(InsertRequest request) throws ActionException;
  +
  +    CreateView createCreateViewAction(CreateViewRequest request) throws ActionException;
   }
  
  
  
  1.7       +2 -1      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/Request.java
  
  Index: Request.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/Request.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Request.java	2001/10/31 09:39:53	1.6
  +++ Request.java	2001/11/09 13:55:34	1.7
  @@ -18,7 +18,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 Request implements Serializable {
   
  @@ -42,6 +42,7 @@
       public static final int RESULTSETCLOSE = 127;
       public static final int ALTER = 128;
       public static final int GRANT = 129;
  +    public static final int CREATEVIEW = 130;
   
       private int mRequestCode;
   
  
  
  
  1.1                  jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/CreateViewRequest.java
  
  Index: CreateViewRequest.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.transport;
  
  
  
  /**
   * Class CreateViewRequest
   *
   *
   * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
   * @version $Revision: 1.1 $
   */
  public class CreateViewRequest extends WriteRequest {
  
      /**
       * Constructor CreateViewRequest
       *
       *
       * @param sql
       *
       */
      public CreateViewRequest(String sql) {
          super(CREATEVIEW, sql);
      }
  }
  
  
  

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