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>