hammant     01/11/27 15:01:31

  Modified:    apps/db  build.xml
               apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql
                        BasicLXSQLAggregateHandler.java
               apps/db/src/java/org/apache/avalon/db/data/impl
                        DefaultAggregateCountColumn.java
               apps/db/src/java/org/apache/avalon/db/test Tester.java
  Added:       apps/db/src/java/org/apache/avalon/db/data/impl
                        DefaultAggregateAveColumn.java
                        DefaultAggregateMaxColumn.java
                        DefaultAggregateMinColumn.java
                        DefaultAggregateSumColumn.java
  Log:
  More work on Aggregate column types
  
  Revision  Changes    Path
  1.21      +3 -2      jakarta-avalon-cornerstone/apps/db/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/build.xml,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- build.xml 2001/11/27 19:00:13     1.20
  +++ build.xml 2001/11/27 23:01:30     1.21
  @@ -306,9 +306,10 @@
   
     <target name="install" depends="main" description="Installs into Phoenix">
       <!-- <fail message="install.dir not specified." unless="install.dir"/> 
-->
  -    <echo message="Installing to ${install.dir}" />    
  +    <echo message="Installing to ${install.dir}" />
       <copy file="${build.lib}/avalon-db.sar" todir="${install.dir}" />
  -    <delete file="${installvar.dir}/avalon-db-install.log" />     
  +    <delete file="${installvar.dir}/avalon-db-install.log" />
  +    <delete file="${install.dir}/avalon-db/SAR-INF/lib/avalon-db.jar" />
       <delete dir="${install.dir}/avalon-db" />
     </target>
   
  
  
  
  1.2       +60 -3     
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.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BasicLXSQLAggregateHandler.java   2001/11/27 21:18:22     1.1
  +++ BasicLXSQLAggregateHandler.java   2001/11/27 23:01:31     1.2
  @@ -21,6 +21,10 @@
   import org.apache.avalon.db.data.impl.BigIntColumn;
   import org.apache.avalon.db.data.impl.DecimalColumn;
   import org.apache.avalon.db.data.impl.DefaultAggregateCountColumn;
  +import org.apache.avalon.db.data.impl.DefaultAggregateSumColumn;
  +import org.apache.avalon.db.data.impl.DefaultAggregateAveColumn;
  +import org.apache.avalon.db.data.impl.DefaultAggregateMinColumn;
  +import org.apache.avalon.db.data.impl.DefaultAggregateMaxColumn;
   import org.apache.avalon.db.actions.ActionException;
   import org.w3c.dom.Element;
   import org.w3c.dom.NodeList;
  @@ -35,7 +39,7 @@
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
    * @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public abstract class BasicLXSQLAggregateHandler extends 
BasicLXSQLQueryableHandler {
   
  @@ -62,8 +66,17 @@
   
           NodeList subFnColumnsNodes = fnColumnsNode.getChildNodes();
           for (int x = 0 ; x < subFnColumnsNodes.getLength(); x++) {
  -            if (subFnColumnsNodes.item(x).getNodeName().equals("count")) {
  +            String nodeName = subFnColumnsNodes.item(x).getNodeName();
  +            if (nodeName.equals("count")) {
                   columns.add(createCountColumn(subFnColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("sum")) {
  +                columns.add(createSumColumn(subFnColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("ave")) {
  +                columns.add(createAveColumn(subFnColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("min")) {
  +                columns.add(createMinColumn(subFnColumnsNodes.item(x), x));
  +            } else if (nodeName.equals("max")) {
  +                columns.add(createMaxColumn(subFnColumnsNodes.item(x), x));
               } else {
                   throw new ActionException("Only 'count' allowed as a node 
under 'group-function-columns' node");
               }
  @@ -76,12 +89,56 @@
   
       }
   
  -
       protected Column createCountColumn(Node columnNode, int ix) throws 
ActionException {
  -        Node nameNode = columnNode.getAttributes().getNamedItem("name");
  +        Node nameNode = columnNode.getAttributes().getNamedItem("as");
           Column column = new DefaultAggregateCountColumn(nameNode == null ? 
null : nameNode.getNodeValue());
           column.setIndex(ix);
           return column;
       }
  +
  +    protected Column createSumColumn(Node columnNode, int ix) throws 
ActionException {
  +        Node nameNode = columnNode.getAttributes().getNamedItem("as");
  +        Node onNode = columnNode.getAttributes().getNamedItem("on");
  +        if (onNode == null) {
  +            throw new ActionException("Sum column must have 'on' attribute");
  +        }
  +        Column column = new DefaultAggregateSumColumn(nameNode == null ? 
null : nameNode.getNodeValue(), onNode.getNodeValue());
  +        column.setIndex(ix);
  +        return column;
  +    }
  +
  +    protected Column createAveColumn(Node columnNode, int ix) throws 
ActionException {
  +        Node nameNode = columnNode.getAttributes().getNamedItem("as");
  +        Node onNode = columnNode.getAttributes().getNamedItem("on");
  +        if (onNode == null) {
  +            throw new ActionException("Ave column must have 'on' attribute");
  +        }
  +        Column column = new DefaultAggregateAveColumn(nameNode == null ? 
null : nameNode.getNodeValue(), onNode.getNodeValue());
  +        column.setIndex(ix);
  +        return column;
  +    }
  +
  +    protected Column createMinColumn(Node columnNode, int ix) throws 
ActionException {
  +        Node nameNode = columnNode.getAttributes().getNamedItem("as");
  +        Node onNode = columnNode.getAttributes().getNamedItem("on");
  +        if (onNode == null) {
  +            throw new ActionException("Min column must have 'on' attribute");
  +        }
  +        Column column = new DefaultAggregateMinColumn(nameNode == null ? 
null : nameNode.getNodeValue(), onNode.getNodeValue());
  +        column.setIndex(ix);
  +        return column;
  +    }
  +
  +    protected Column createMaxColumn(Node columnNode, int ix) throws 
ActionException {
  +        Node nameNode = columnNode.getAttributes().getNamedItem("as");
  +        Node onNode = columnNode.getAttributes().getNamedItem("on");
  +        if (onNode == null) {
  +            throw new ActionException("Max column must have 'on' attribute");
  +        }
  +        Column column = new DefaultAggregateMaxColumn(nameNode == null ? 
null : nameNode.getNodeValue(), onNode.getNodeValue());
  +        column.setIndex(ix);
  +        return column;
  +    }
  +
   
   }
  
  
  
  1.2       +5 -5      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateCountColumn.java
  
  Index: DefaultAggregateCountColumn.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateCountColumn.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultAggregateCountColumn.java  2001/11/27 21:18:22     1.1
  +++ DefaultAggregateCountColumn.java  2001/11/27 23:01:31     1.2
  @@ -21,13 +21,13 @@
    *
    *
    * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
  -public class DefaultAggregateCountColumn extends 
AbstractAggregateFunctionColumn implements NumericType {
  +public class DefaultAggregateCountColumn extends 
AbstractAggregateFunctionColumn {
   
  -    private int mCount;
  -    private Integer mCount2;
  -    
  +    int mCount;
  +    Integer mCount2;
  +
       /**
        * Constructor DefaultAggregateCountColumn
        *
  
  
  
  1.1                  
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateAveColumn.java
  
  Index: DefaultAggregateAveColumn.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.data.impl;
  
  import org.apache.avalon.db.data.types.Type;
  import org.apache.avalon.db.data.types.NumericType;
  import org.apache.avalon.db.data.Row;
  import org.apache.avalon.db.actions.ActionException;
  
  import java.math.BigDecimal;
  
  
  /**
   * Class DefaultAggregateAveColumn
   *
   *
   * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
   * @version $Revision: 1.1 $
   */
  public class DefaultAggregateAveColumn extends 
AbstractAggregateFunctionColumn implements NumericType {
  
      private int mAve;
      private Integer mAve2;
      private String mOnColumn;
  
      /**
       * Constructor DefaultAggregateAveColumn
       *
       *
       * @param name
       *
       */
      public DefaultAggregateAveColumn(String name, String on) throws 
ActionException {
          super(getNameOfColumn(name),"integer",Integer.class);
          mOnColumn = on;
      }
  
      public Object getValue(Row row) {
          if (mAve2 == null) {
              mAve2 = new Integer(mAve);
          }
          return mAve2;
      }
  
      public String toString(Row row) {
          return "" + mAve;
      }
  
      public int getPrecesion() {
          return Type.PREC_INT;
      }
  
      public Integer toInteger(Row row) {
          return mAve2;
      }
  
      public Long toLong(Row row) {
          return new Long((long) mAve);
      }
  
      public BigDecimal toBigDecimal(Row row) {
          return new BigDecimal((double) mAve);
      }
  
      public Float toFloat(Row row) {
          return new Float((float) mAve);
      }
  
      public Short toShort(Row row) {
          return new Short((short) mAve);
      }
  }
  
  
  
  1.1                  
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateMaxColumn.java
  
  Index: DefaultAggregateMaxColumn.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.data.impl;
  
  import org.apache.avalon.db.data.types.Type;
  import org.apache.avalon.db.data.types.NumericType;
  import org.apache.avalon.db.data.Row;
  import org.apache.avalon.db.actions.ActionException;
  
  import java.math.BigDecimal;
  
  
  /**
   * Class DefaultAggregateMaxColumn
   *
   *
   * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
   * @version $Revision: 1.1 $
   */
  public class DefaultAggregateMaxColumn extends 
AbstractAggregateFunctionColumn implements NumericType {
  
      private int mMax;
      private Integer mMax2;
      private String mOnColumn;
  
      /**
       * Constructor DefaultAggregateMaxColumn
       *
       *
       * @param name
       *
       */
      public DefaultAggregateMaxColumn(String name, String on) throws 
ActionException {
          super(getNameOfColumn(name),"integer",Integer.class);
          mOnColumn = on;
      }
  
      public Object getValue(Row row) {
          if (mMax2 == null) {
              mMax2 = new Integer(mMax);
          }
          return mMax2;
      }
  
      public String toString(Row row) {
          return "" + mMax;
      }
  
      public int getPrecesion() {
          return Type.PREC_INT;
      }
  
      public Integer toInteger(Row row) {
          return mMax2;
      }
  
      public Long toLong(Row row) {
          return new Long((long) mMax);
      }
  
      public BigDecimal toBigDecimal(Row row) {
          return new BigDecimal((double) mMax);
      }
  
      public Float toFloat(Row row) {
          return new Float((float) mMax);
      }
  
      public Short toShort(Row row) {
          return new Short((short) mMax);
      }
  }
  
  
  
  1.1                  
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateMinColumn.java
  
  Index: DefaultAggregateMinColumn.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.data.impl;
  
  import org.apache.avalon.db.data.types.Type;
  import org.apache.avalon.db.data.types.NumericType;
  import org.apache.avalon.db.data.Row;
  import org.apache.avalon.db.actions.ActionException;
  
  import java.math.BigDecimal;
  
  
  /**
   * Class DefaultAggregateMinColumn
   *
   *
   * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
   * @version $Revision: 1.1 $
   */
  public class DefaultAggregateMinColumn extends 
AbstractAggregateFunctionColumn implements NumericType {
  
      private int mMin;
      private Integer mMin2;
      private String mOnColumn;
  
      /**
       * Constructor DefaultAggregateMinColumn
       *
       *
       * @param name
       *
       */
      public DefaultAggregateMinColumn(String name, String on) throws 
ActionException {
          super(getNameOfColumn(name),"integer",Integer.class);
          mOnColumn = on;
      }
  
      public Object getValue(Row row) {
          if (mMin2 == null) {
              mMin2 = new Integer(mMin);
          }
          return mMin2;
      }
  
      public String toString(Row row) {
          return "" + mMin;
      }
  
      public int getPrecesion() {
          return Type.PREC_INT;
      }
  
      public Integer toInteger(Row row) {
          return mMin2;
      }
  
      public Long toLong(Row row) {
          return new Long((long) mMin);
      }
  
      public BigDecimal toBigDecimal(Row row) {
          return new BigDecimal((double) mMin);
      }
  
      public Float toFloat(Row row) {
          return new Float((float) mMin);
      }
  
      public Short toShort(Row row) {
          return new Short((short) mMin);
      }
  }
  
  
  
  1.1                  
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultAggregateSumColumn.java
  
  Index: DefaultAggregateSumColumn.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.data.impl;
  
  import org.apache.avalon.db.data.types.Type;
  import org.apache.avalon.db.data.types.NumericType;
  import org.apache.avalon.db.data.Row;
  import org.apache.avalon.db.actions.ActionException;
  
  import java.math.BigDecimal;
  
  
  /**
   * Class DefaultAggregateSumColumn
   *
   *
   * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL 
PROTECTED]</a>
   * @version $Revision: 1.1 $
   */
  public class DefaultAggregateSumColumn extends 
AbstractAggregateFunctionColumn implements NumericType {
  
      private int mSum;
      private Integer mSum2;
      private String mOnColumn;
  
      /**
       * Constructor DefaultAggregateSumColumn
       *
       *
       * @param name
       *
       */
      public DefaultAggregateSumColumn(String name, String on) throws 
ActionException {
          super(getNameOfColumn(name),"integer",Integer.class);
          mOnColumn = on;
      }
  
      public Object getValue(Row row) {
          if (mSum2 == null) {
              mSum2 = new Integer(mSum);
          }
          return mSum2;
      }
  
      public String toString(Row row) {
          return "" + mSum;
      }
  
      public int getPrecesion() {
          return Type.PREC_INT;
      }
  
      public Integer toInteger(Row row) {
          return mSum2;
      }
  
      public Long toLong(Row row) {
          return new Long((long) mSum);
      }
  
      public BigDecimal toBigDecimal(Row row) {
          return new BigDecimal((double) mSum);
      }
  
      public Float toFloat(Row row) {
          return new Float((float) mSum);
      }
  
      public Short toShort(Row row) {
          return new Short((short) mSum);
      }
  }
  
  
  
  1.31      +4 -0      
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java
  
  Index: Tester.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Tester.java       2001/11/27 21:18:22     1.30
  +++ Tester.java       2001/11/27 23:01:31     1.31
  @@ -201,6 +201,10 @@
                            "</grouped-columns>" +
                            "<group-function-columns>" +
                                "<count as=\"surCount\"/>" +
  +                             "<max as=\"maxAge\" on=\"age\"/>" +
  +                             "<min as=\"minAge\" on=\"age\"/>" +
  +                             "<ave as=\"aveAge\" on=\"age\"/>" +
  +                             "<sum as=\"sumAge\" on=\"age\"/>" +
                            "</group-function-columns>" +
                         "</create-aggregate-view>";
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to