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