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 12:41:53 UTC
cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services DatabasePersistor.java
hammant 01/11/09 03:41:53
Modified: apps/db/src/java/org/apache/avalon/db/basic/actions
BasicCreateTable.java BasicCreateView.java
apps/db/src/java/org/apache/avalon/db/data/impl
AbstractView.java
apps/db/src/java/org/apache/avalon/db/persistence/inmemory
NoPersistence.java
apps/db/src/java/org/apache/avalon/db/persistence/store
StorePersistence.java
apps/db/src/java/org/apache/avalon/db/services
DatabasePersistor.java
Added: apps/db/src/java/org/apache/avalon/db/basic/actions
BasicCreateRowHolder.java
Log:
Changes for view to reuse table logic
Revision Changes Path
1.3 +2 -28 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateTable.java
Index: BasicCreateTable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateTable.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BasicCreateTable.java 2001/11/09 11:16:59 1.2
+++ BasicCreateTable.java 2001/11/09 11:41:53 1.3
@@ -30,7 +30,7 @@
* @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 {
+public class BasicCreateTable extends BasicCreateRowHolder implements CreateTable {
private String mTableName;
private Column[] mColumns;
@@ -61,33 +61,7 @@
System.out.println("ct execute");
NodeList subRootNodes = mLxsql.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.
- columns.toArray(mColumns);
+ mColumns = getColumns(mLxsql);
/*
1.2 +22 -19 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.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicCreateView.java 2001/11/09 11:16:59 1.1
+++ BasicCreateView.java 2001/11/09 11:41:53 1.2
@@ -13,7 +13,9 @@
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.data.View;
import org.apache.avalon.db.basic.data.BasicTable;
+import org.apache.avalon.db.basic.data.BasicView;
import org.apache.avalon.db.services.DatabasePersistor;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
@@ -27,13 +29,13 @@
*
*
* @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 BasicCreateView extends AbstractAction implements CreateTable {
+public class BasicCreateView extends BasicCreateRowHolder implements CreateTable {
private String mViewName;
- private BasicCreateTable basicCreateTable;
private BasicSelect basicSelect;
+ private Document mLxsql;
/**
* Constructor BCELCreateTable
@@ -45,17 +47,7 @@
*/
public BasicCreateView(String viewName, Document lxsql) {
mViewName = viewName;
- NodeList subRootNodes = lxsql.getChildNodes();
- for (int i = 0; i < subRootNodes.getLength(); i++) {
- if (subRootNodes.item(i).getNodeName().equals("create-table")) {
- basicCreateTable = new BasicCreateTable(viewName, (Element) subRootNodes.item(i));
- } else if (subRootNodes.item(i).getNodeName().equals("select-simple")) {
- //basicSelect = new BasicSelect(tableName, (Element) subRootNodes.item(i));
- // TODO
- }
- }
-
-
+ mLxsql = lxsql;
}
@@ -69,20 +61,31 @@
System.out.println("cv execute");
- if (basicCreateTable != null) {
- basicCreateTable.execute();
+ NodeList subRootNodes = mLxsql.getChildNodes();
+ Column[] columns = null;
+ for (int i = 0; i < subRootNodes.getLength(); i++) {
+ if (subRootNodes.item(i).getNodeName().equals("create-table")) {
+ columns = getColumns((Element) subRootNodes.item(i));
+ } else if (subRootNodes.item(i).getNodeName().equals("select-simple")) {
+ //basicSelect = new BasicSelect(tableName, (Element) subRootNodes.item(i));
+ // TODO
+ }
}
+
+
+
+ View view = new BasicView(mViewName, columns);
+ mDatabasePersistor.addView(mViewName, view);
+
if (basicSelect != null) {
basicSelect.execute();
}
+
}
public void setDatabasePersistor(DatabasePersistor databasePersistor) {
super.setDatabasePersistor(databasePersistor);
- if (basicCreateTable != null) {
- basicCreateTable.setDatabasePersistor(databasePersistor);
- }
if (basicSelect != null) {
basicSelect.setDatabasePersistor(databasePersistor);
}
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateRowHolder.java
Index: BasicCreateRowHolder.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.data.impl.DefaultColumn;
import org.apache.avalon.db.basic.data.BasicTable;
import org.apache.avalon.db.services.DatabasePersistor;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import java.util.Vector;
/**
* Class BasicCreateRowHolder
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public abstract class BasicCreateRowHolder extends AbstractAction implements CreateTable {
/**
* Method execute
*
*
*/
protected Column[] getColumns(Element lxsql) throws ActionException {
NodeList subRootNodes = lxsql.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
}
}
Column[] columnsAry = new Column[columns.size()];
columns.toArray(columnsAry);
return columnsAry;
}
}
1.2 +3 -4 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractView.java
Index: AbstractView.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractView.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractView.java 2001/11/09 11:16:59 1.1
+++ AbstractView.java 2001/11/09 11:41:53 1.2
@@ -9,10 +9,9 @@
package org.apache.avalon.db.data.impl;
-
-import org.apache.avalon.db.data.Table;
import org.apache.avalon.db.data.RowHolder;
import org.apache.avalon.db.data.Column;
+import org.apache.avalon.db.data.View;
import java.util.Vector;
import java.util.Collections;
@@ -24,9 +23,9 @@
*
*
* @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 AbstractView extends AbstractRowHolder implements Table {
+public abstract class AbstractView extends AbstractRowHolder implements View {
private Vector rows = new Vector();
1.4 +6 -1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/inmemory/NoPersistence.java
Index: NoPersistence.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/inmemory/NoPersistence.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- NoPersistence.java 2001/11/05 08:06:21 1.3
+++ NoPersistence.java 2001/11/09 11:41:53 1.4
@@ -13,6 +13,7 @@
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.services.ActionCache;
import org.apache.avalon.db.data.Table;
+import org.apache.avalon.db.data.View;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.context.Context;
@@ -34,7 +35,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class NoPersistence extends AbstractLoggable
implements DatabasePersistor, Block, Contextualizable, Composable, Configurable,
@@ -121,4 +122,8 @@
public void addTable(String tableName, Table table) {
mAddressableObjects.put(tableName, table);
}
+ public void addView(String viewName, View view) {
+ mAddressableObjects.put(viewName, view);
+ }
+
}
1.3 +4 -1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/store/StorePersistence.java
Index: StorePersistence.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/store/StorePersistence.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- StorePersistence.java 2001/10/30 17:45:14 1.2
+++ StorePersistence.java 2001/11/09 11:41:53 1.3
@@ -13,6 +13,7 @@
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.services.ActionCache;
import org.apache.avalon.db.data.Table;
+import org.apache.avalon.db.data.View;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.context.Context;
@@ -32,7 +33,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class StorePersistence extends AbstractLoggable
implements DatabasePersistor, Block, Contextualizable, Composable, Configurable,
@@ -117,4 +118,6 @@
*
*/
public void addTable(String tableName, Table table) {}
+ public void addView(String viewName, View view) {}
+
}
1.3 +5 -1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/DatabasePersistor.java
Index: DatabasePersistor.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/services/DatabasePersistor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DatabasePersistor.java 2001/10/30 17:45:14 1.2
+++ DatabasePersistor.java 2001/11/09 11:41:53 1.3
@@ -11,6 +11,7 @@
import org.apache.avalon.db.data.Table;
+import org.apache.avalon.db.data.View;
/**
@@ -18,7 +19,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version * $Revision: 1.2 $
+ * @version * $Revision: 1.3 $
*/
public interface DatabasePersistor {
@@ -53,4 +54,7 @@
*
*/
void addTable(String tableName, Table table);
+
+ void addView(String viewName, View table);
+
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>