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>