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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>