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>