You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2001/12/01 12:49:25 UTC

cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl DefaultAggregateVarcharKeyColumn.java

hammant     01/12/01 03:49:25

  Modified:    apps/db/src/java/org/apache/avalon/db/basic/actions
                        BasicCreateAggregateView.java
               apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql
                        BasicLXSQLAggregateHandler.java
                        BasicLXSQLCreateAggregateViewHandler.java
               apps/db/src/java/org/apache/avalon/db/data/impl
                        DefaultAggregateVarcharKeyColumn.java
  Log:
  AggregateView creation now works.  Not running yet.
  
  Revision  Changes    Path
  1.3       +21 -17    jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateAggregateView.java
  
  Index: BasicCreateAggregateView.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateAggregateView.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BasicCreateAggregateView.java	2001/11/29 10:35:26	1.2
  +++ BasicCreateAggregateView.java	2001/12/01 11:49:24	1.3
  @@ -8,38 +8,44 @@
    */
   package org.apache.avalon.db.basic.actions;
   
  -import org.apache.avalon.db.actions.ActionException;
   import org.apache.avalon.db.actions.CreateAggregateView;
  -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.actions.ActionException;
   import org.apache.avalon.db.data.Queryable;
  -import org.apache.avalon.db.basic.data.BasicTable;
  -import org.apache.avalon.db.basic.data.BasicView;
  +import org.apache.avalon.db.data.Column;
  +import org.apache.avalon.db.basic.data.BasicAggregateView;
   import org.apache.avalon.db.services.DatabasePersistor;
   
  -import java.util.Vector;
   
  -
   /**
    * Class BCELCreateTable
    *
    *
    * @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 BasicCreateAggregateView extends BasicCreateQueryable implements CreateAggregateView {
   
  -    private String mViewName, mOnName;
  -    private BasicCriteria mBasicCriteria;
  +    protected String mViewName;
  +    protected Queryable mSrcQueryable;
  +    protected BasicCriteria mBasicCriteria;
   
  -    public BasicCreateAggregateView(String viewName, String onName, Column[] columns, BasicCriteria basicCriteria) {
  -        super(columns);
  +    public BasicCreateAggregateView(String viewName, Queryable srcQueryable, Column[] keyColumns, Column[] functionColumns, BasicCriteria basicCriteria) {
  +        super(makeAllColumns(keyColumns, functionColumns));
           mViewName = viewName;
  -        mOnName = onName;
  +        mSrcQueryable = srcQueryable;
           mBasicCriteria = basicCriteria;
       }
   
  +    private static Column[] makeAllColumns(Column[] keyColumns, Column[] functColumns) {
  +        Column[] allColumns = new Column[keyColumns.length + functColumns.length];
  +        System.arraycopy(keyColumns,0,allColumns,0,keyColumns.length);
  +        System.arraycopy(functColumns,0,allColumns,keyColumns.length,functColumns.length);
  +        for (int i =0; i < allColumns.length; i++) {
  +            allColumns[i].setIndex(i);
  +        }
  +        return allColumns;
  +    }
  +
       public void initialize() throws ActionException {
       }
   
  @@ -51,10 +57,8 @@
       public void execute() throws ActionException {
   
           System.out.println("cav execute");
  -
  -        Queryable queryable = mDatabasePersistor.getQueryable(mOnName);
   
  -        BasicView view = new BasicView(mViewName, mColumns, queryable ,mBasicCriteria);
  +        BasicAggregateView view = new BasicAggregateView(mViewName, mColumns, mSrcQueryable ,mBasicCriteria);
           view.enableLogging(this.getLogger());
   
   
  
  
  
  1.6       +11 -16    jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLAggregateHandler.java
  
  Index: BasicLXSQLAggregateHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLAggregateHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BasicLXSQLAggregateHandler.java	2001/12/01 10:49:43	1.5
  +++ BasicLXSQLAggregateHandler.java	2001/12/01 11:49:25	1.6
  @@ -13,15 +13,6 @@
   import org.apache.avalon.db.data.Column;
   import org.apache.avalon.db.data.Queryable;
   import org.apache.avalon.db.data.types.StringColumn;
  -import org.apache.avalon.db.data.impl.DefaultVarCharColumn;
  -import org.apache.avalon.db.data.impl.DefaultIntegerColumn;
  -import org.apache.avalon.db.data.impl.DefaultDateColumn;
  -import org.apache.avalon.db.data.impl.DefaultTimeColumn;
  -import org.apache.avalon.db.data.impl.DefaultTimestampColumn;
  -import org.apache.avalon.db.data.impl.DefaultSmallIntColumn;
  -import org.apache.avalon.db.data.impl.DefaultRealColumn;
  -import org.apache.avalon.db.data.impl.DefaultBigIntColumn;
  -import org.apache.avalon.db.data.impl.DefaultDecimalColumn;
   import org.apache.avalon.db.data.impl.DefaultAggregateCountColumn;
   import org.apache.avalon.db.data.impl.DefaultAggregateSumColumn;
   import org.apache.avalon.db.data.impl.DefaultAggregateAveColumn;
  @@ -42,9 +33,9 @@
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
    * @author Gerhard Froehlich <a href="mailto:g-froehlich@gmx.de">g-froehlich@gmx.de</a>
  - * @version $Revision: 1.5 $
  + * @version $Revision: 1.6 $
    */
  -public abstract class BasicLXSQLAggregateHandler extends BasicLXSQLQueryableHandler {
  +public abstract class BasicLXSQLAggregateHandler extends BasicLXSQLHandler {
   
       /**
        * Constructor BasicLXSQLAggregateHandler
  @@ -80,8 +71,10 @@
                   columns.add(createMinColumn(subFnColumnsNodes.item(x), x));
               } else if (nodeName.equals("max")) {
                   columns.add(createMaxColumn(subFnColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("#text")) {
  +                // whitespace OK
               } else {
  -                throw new ActionException("Only 'count' allowed as a node under 'group-function-columns' node");
  +                throw new ActionException("Only 'count/sum/ave/min/max' allowed as a node under 'group-function-columns' node");
               }
           }
   
  @@ -155,10 +148,12 @@
   
           NodeList subColumnsNodes = columnsNode.getChildNodes();
           for (int x = 0 ; x < subColumnsNodes.getLength(); x++) {
  -            if (subColumnsNodes.item(x).getNodeName().equals("column")) {
  +            String nodeName = subColumnsNodes.item(x).getNodeName();
  +            if (nodeName.equals("column")) {
                   columns.add(createKeyColumn(queryable, subColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("#text")) {
  +                // whitespace OK
               } else {
  -
                   throw new ActionException("Only 'column' allowed as a node under 'columns' node");
               }
           }
  @@ -185,10 +180,10 @@
               if (col.getName().equals(fieldName)) {
                   if (col instanceof StringColumn) {
                       StringColumn sCol = (StringColumn) col;
  -                    return new DefaultAggregateVarcharKeyColumn(fieldName, aliasName, sCol.getMaxLength());
  +                    return new DefaultAggregateVarcharKeyColumn(sCol, aliasName);
                   }
               }
           }
  -        throw new ActionException("Unmatched" + fieldName + " for source table/view/index");
  +        throw new ActionException("Unmatched column name '" + fieldName + "' for source table/view/index");
       }
   }
  
  
  
  1.7       +15 -6     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLCreateAggregateViewHandler.java
  
  Index: BasicLXSQLCreateAggregateViewHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLCreateAggregateViewHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BasicLXSQLCreateAggregateViewHandler.java	2001/11/29 14:29:06	1.6
  +++ BasicLXSQLCreateAggregateViewHandler.java	2001/12/01 11:49:25	1.7
  @@ -20,6 +20,8 @@
   import org.apache.avalon.db.actions.ActionException;
   import org.apache.avalon.db.actions.CreateAggregateView;
   import org.apache.avalon.db.data.Column;
  +import org.apache.avalon.db.data.Queryable;
  +import org.apache.avalon.db.data.impl.AbstractQueryable;
   import org.apache.avalon.db.server.DBRequestContext;
   
   import org.w3c.dom.Document;
  @@ -32,7 +34,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 class BasicLXSQLCreateAggregateViewHandler extends BasicLXSQLAggregateHandler {
   
  @@ -72,23 +74,30 @@
               throw new ActionException("View " + viewName + " already exists as a Table/View/Index");
           } else {
   
  -            Column[] columns = null;
  +            Queryable onQueryable = mDatabasePersistor.getQueryable(onName);
  +
  +
  +            Column[] keyColumns = null;
  +            Column[] functColumns = null;
               NodeList subRootNodes = rootElement.getChildNodes();
               for (int i = 0; i < subRootNodes.getLength(); i++) {
                   if (subRootNodes.item(i).getNodeName().equals("grouped-columns")) {
  -                    columns = this.getColumns((Element) subRootNodes.item(i));
  +                    keyColumns = this.getKeyColumns(onQueryable, (Element) subRootNodes.item(i));
                   } else if (subRootNodes.item(i).getNodeName().equals("group-function-columns")) {
  -                    columns = this.getAggregateFunctionColumns((Element) subRootNodes.item(i));
  +                    functColumns = this.getAggregateFunctionColumns((Element) subRootNodes.item(i));
                   }
               }
   
               BasicLXSQLCriteriaHelper basicCriteriaHelper = new BasicLXSQLCriteriaHelper(rootElement);
               basicCriteriaHelper.enableLogging(super.getLogger());
   
  +
  +
               CreateAggregateView action = new BasicCreateAggregateView(
                                                   viewName,
  -                                                onName,
  -                                                columns ,
  +                                                onQueryable,
  +                                                keyColumns ,
  +                                                functColumns,
                                                   new BasicCriteria(basicCriteriaHelper.getCriteria())
                                            );
   
  
  
  
  1.4       +48 -12    jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateVarcharKeyColumn.java
  
  Index: DefaultAggregateVarcharKeyColumn.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateVarcharKeyColumn.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultAggregateVarcharKeyColumn.java	2001/12/01 10:49:43	1.3
  +++ DefaultAggregateVarcharKeyColumn.java	2001/12/01 11:49:25	1.4
  @@ -8,39 +8,75 @@
    */
   package org.apache.avalon.db.data.impl;
   
  -import org.apache.avalon.db.data.types.NumericColumn;
  -import org.apache.avalon.db.data.Row;
   import org.apache.avalon.db.data.AggregateKeyColumn;
  -import org.apache.avalon.db.data.Queryable;
  +import org.apache.avalon.db.data.Row;
   import org.apache.avalon.db.data.Column;
  +import org.apache.avalon.db.data.types.StringColumn;
   import org.apache.avalon.db.actions.ActionException;
   
   import java.math.BigDecimal;
   
   
   /**
  - * Class DefaultAggregateAveColumn
  + * Class DefaultAggregateVarcharKeyColumn
    *
    *
    * @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 DefaultAggregateVarcharKeyColumn extends DefaultVarCharColumn implements AggregateKeyColumn {
  +public class DefaultAggregateVarcharKeyColumn extends AbstractColumn implements AggregateKeyColumn, StringColumn {
   
  -    private int mAve;
  -    private Integer mAve2;
       private String mAlias;
  +    private StringColumn mStringColumn;
   
       /**
  -     * Constructor DefaultAggregateAveColumn
  +     * Constructor DefaultAggregateVarcharKeyColumn
        *
        *
        * @param name
        *
        */
  -    public DefaultAggregateVarcharKeyColumn(String name, String as, int maxLen) throws ActionException {
  -        super(name, maxLen);
  -        mAlias = as;
  +    public DefaultAggregateVarcharKeyColumn(StringColumn stringColumn, String alias) throws ActionException {
  +        super(stringColumn.getName(), "varchar", String.class.getName());
  +        mAlias = alias;
  +        mStringColumn = stringColumn;
       }
   
  +    public Integer toInteger(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public Long toLong(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public int getMaxLength() {
  +        return mStringColumn.getMaxLength();
  +    }
  +
  +    public BigDecimal toBigDecimal(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public Float toFloat(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public Short toShort(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public String toString(Row row) {
  +        //TODO
  +        return null;
  +    }
  +
  +    public int getPrecesion() {
  +        return Column.PREC_STRING;
  +    }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>