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/11/29 15:29:06 UTC
cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql BasicLXSQLCriteriaHelper.java BasicLXSQLCreateAggregateViewHandler.java BasicLXSQLCreateViewHandler.java BasicLXSQLDeleteRowsHandler.java BasicLXSQLSelectSimpleHandler.java BasicLXSQLUpdateRowsHandler.java
hammant 01/11/29 06:29:06
Modified: apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql
BasicLXSQLCreateAggregateViewHandler.java
BasicLXSQLCreateViewHandler.java
BasicLXSQLDeleteRowsHandler.java
BasicLXSQLSelectSimpleHandler.java
BasicLXSQLUpdateRowsHandler.java
Added: apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql
BasicLXSQLCriteriaHelper.java
Removed: apps/db/src/java/org/apache/avalon/db/basic/actions
BasicLXSQLCriteriaHelper.java
Log:
move of LXSQL thing to correct place
Revision Changes Path
1.6 +1 -2 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.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- BasicLXSQLCreateAggregateViewHandler.java 2001/11/29 14:26:13 1.5
+++ BasicLXSQLCreateAggregateViewHandler.java 2001/11/29 14:29:06 1.6
@@ -10,7 +10,6 @@
import org.apache.avalon.db.basic.parser.BasicLXSQLParser;
import org.apache.avalon.db.basic.actions.BasicCriteria;
-import org.apache.avalon.db.basic.actions.BasicLXSQLCriteriaHelper;
import org.apache.avalon.db.basic.actions.BasicSelectSimple;
import org.apache.avalon.db.basic.actions.BasicCreateAggregateView;
import org.apache.avalon.db.services.DatabasePersistor;
@@ -33,7 +32,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class BasicLXSQLCreateAggregateViewHandler extends BasicLXSQLAggregateHandler {
1.10 +3 -4 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLCreateViewHandler.java
Index: BasicLXSQLCreateViewHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLCreateViewHandler.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- BasicLXSQLCreateViewHandler.java 2001/11/29 10:35:55 1.9
+++ BasicLXSQLCreateViewHandler.java 2001/11/29 14:29:06 1.10
@@ -11,7 +11,6 @@
import org.apache.avalon.db.basic.parser.BasicLXSQLParser;
import org.apache.avalon.db.basic.actions.BasicCreateView;
import org.apache.avalon.db.basic.actions.BasicCriteria;
-import org.apache.avalon.db.basic.actions.BasicLXSQLCriteriaHelper;
import org.apache.avalon.db.basic.actions.BasicSelectSimple;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.transport.Reply;
@@ -33,7 +32,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
*/
public class BasicLXSQLCreateViewHandler extends BasicLXSQLQueryableHandler {
@@ -86,8 +85,8 @@
basicCriteriaHelper.enableLogging(super.getLogger());
CreateView action = new BasicCreateView(
- viewName,
- onName,
+ viewName,
+ onName,
columns,
new BasicCriteria(basicCriteriaHelper.getCriteria())
);
1.8 +2 -3 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLDeleteRowsHandler.java
Index: BasicLXSQLDeleteRowsHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLDeleteRowsHandler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BasicLXSQLDeleteRowsHandler.java 2001/11/29 10:35:55 1.7
+++ BasicLXSQLDeleteRowsHandler.java 2001/11/29 14:29:06 1.8
@@ -13,7 +13,6 @@
import org.apache.avalon.db.basic.parser.BasicLXSQLParser;
import org.apache.avalon.db.basic.actions.BasicDeleteRows;
import org.apache.avalon.db.basic.actions.BasicCriteria;
-import org.apache.avalon.db.basic.actions.BasicLXSQLCriteriaHelper;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.transport.Reply;
import org.apache.avalon.db.transport.Request;
@@ -34,7 +33,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.7 $
+ * @version $Revision: 1.8 $
*/
public class BasicLXSQLDeleteRowsHandler extends BasicLXSQLHandler {
@@ -73,7 +72,7 @@
BasicLXSQLCriteriaHelper basicCriteriaHelper = new BasicLXSQLCriteriaHelper(rootElement);
basicCriteriaHelper.enableLogging(super.getLogger());
- DeleteRows action = new BasicDeleteRows((AbstractQueryable) queryable,
+ DeleteRows action = new BasicDeleteRows((AbstractQueryable) queryable,
new BasicCriteria(basicCriteriaHelper.getCriteria()));
mParser.initializeAction(action);
1.7 +1 -2 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLSelectSimpleHandler.java
Index: BasicLXSQLSelectSimpleHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLSelectSimpleHandler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BasicLXSQLSelectSimpleHandler.java 2001/11/29 14:26:13 1.6
+++ BasicLXSQLSelectSimpleHandler.java 2001/11/29 14:29:06 1.7
@@ -10,7 +10,6 @@
import org.apache.avalon.db.basic.parser.BasicLXSQLParser;
import org.apache.avalon.db.basic.actions.BasicSelectSimple;
import org.apache.avalon.db.basic.actions.BasicCriteria;
-import org.apache.avalon.db.basic.actions.BasicLXSQLCriteriaHelper;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.transport.Reply;
import org.apache.avalon.db.transport.Request;
@@ -36,7 +35,7 @@
*
* @author Gerhard Froehlich <a href="mailto:g-froehlich@gmx.de">g-froehlich@gmx.de</a>
* @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 BasicLXSQLSelectSimpleHandler extends BasicLXSQLHandler {
1.9 +1 -2 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLUpdateRowsHandler.java
Index: BasicLXSQLUpdateRowsHandler.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLUpdateRowsHandler.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- BasicLXSQLUpdateRowsHandler.java 2001/11/29 14:26:13 1.8
+++ BasicLXSQLUpdateRowsHandler.java 2001/11/29 14:29:06 1.9
@@ -11,7 +11,6 @@
import org.apache.avalon.db.basic.parser.BasicLXSQLParser;
import org.apache.avalon.db.basic.actions.BasicUpdateRows;
import org.apache.avalon.db.basic.actions.BasicCriteria;
-import org.apache.avalon.db.basic.actions.BasicLXSQLCriteriaHelper;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.transport.Reply;
import org.apache.avalon.db.transport.Request;
@@ -33,7 +32,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
public class BasicLXSQLUpdateRowsHandler extends BasicLXSQLHandler {
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/handlers/lxsql/BasicLXSQLCriteriaHelper.java
Index: BasicLXSQLCriteriaHelper.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.handlers.lxsql;
import org.apache.avalon.db.actions.ActionException;
import org.apache.avalon.db.data.ValidationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.regexp.RE;
import org.apache.regexp.RESyntaxException;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
/**
* Class BasicLXSQLCriteriaHelper
*
* @author Gerhard Froehlich <a href="mailto:g-froehlich@gmx.de">g-froehlich@gmx.de</a>
* @version $Revision: 1.1 $
*/
public class BasicLXSQLCriteriaHelper extends AbstractLogEnabled {
private String mWhereClause;
private StringBuffer mWhereBuffer;
private static Hashtable mOperators;
static {
mOperators = new Hashtable();
addOperator("=","testEqual");
addOperator(">","testGreaterThan");
addOperator("<","testSmallerThan");
addOperator("<>","testNotEqual");
addOperator("<=","testSmallerThanOrEqual");
addOperator(">=","testGreaterThanOrEqual");
addOperator("like","testLike");
}
private static void addOperator(String operator, String method) {
mOperators.put(operator,method);
}
public BasicLXSQLCriteriaHelper(Element rootElement) {
try {
parseLXSQL(rootElement);
} catch (ActionException ae) {
ae.printStackTrace();
}
mWhereClause = mWhereBuffer.toString();
}
public String getCriteria() {
return mWhereClause;
}
private void parseLXSQL(Element rootElement) throws ActionException {
NodeList subRootNodes = this.getSubRootNodes(rootElement);
boolean whereDone = false;
StringBuffer whereBuffer = new StringBuffer();
int indent = 0;
try {
for (int i=0; i < subRootNodes.getLength(); i++) {
if(subRootNodes.item(i).getNodeName().equals("where")) {
if (whereDone) {
throw new ActionException("<where> term must only be specified once");
}
Element whereElement = (Element)subRootNodes.item(i);
NodeList elements = whereElement.getChildNodes();
for (int j=0; j < elements.getLength(); j++) {
String nodeName = elements.item(j).getNodeName();
if (!nodeName.equals("#text")) {
parseWhereTerm((Element) elements.item(j), whereBuffer, indent+1);
}
}
whereDone = true;
}
}
} catch (ValidationException ve) {
throw new ActionException("Validation Exception: " + ve.getMessage());
}
mWhereBuffer = whereBuffer;
//getLogger().debug("sb=[\n" + whereBuffer + "\n]");
}
private void parseWhereTerm(Element element, StringBuffer sb, int indent) throws ValidationException {
if(element != null) {
//getLogger().debug("Element != null " + element);
if(element.getTagName().equals("and")) {
//getLogger().debug("parseWhereTerm(): found and");
parseWhereAndOrTerm(element.getChildNodes(),sb, indent, "&");
} else if(element.getTagName().equals("or")) {
//getLogger().debug("parseWhereTerm(): found or");
parseWhereAndOrTerm(element.getChildNodes(),sb, indent, "|");
} else if(element.getTagName().equals("condition")) {
//getLogger().debug("parseWhereTerm(): found condition");
parseWhereConditionTerm(element,sb,indent);
} else {
throw new ValidationException("Unknown where term " + element.getTagName());
}
} else {
//getLogger().debug("Element == null " + element);
//getLogger().debug("parseWhereTerm after if");
throw new ValidationException("Null where element");
}
//getLogger().debug("parseWhereTerm at the end");
}
private void parseWhereAndOrTerm(NodeList nodes, StringBuffer sb, int indent, String andOr) {
sb.append(getIndent(indent) + "(\n");
try {
Vector realNodes = new Vector();
for(int i=0; i<nodes.getLength(); i++) {
if (!nodes.item(i).getNodeName().equals("#text")) {
realNodes.add(nodes.item(i));
}
}
for (int i = 0; i < realNodes.size(); i++) {
Element elem = (Element) realNodes.elementAt(i);
//getLogger().debug("Looping and/or");
parseWhereTerm(elem,sb, indent +1);
if (i+1 < realNodes.size()) {
sb.append( getIndent(indent) + andOr + "\n");
}
}
} catch(Exception e) {
e.printStackTrace();
}
sb.append(getIndent(indent) + ")\n");
}
private void parseWhereConditionTerm(Element element, StringBuffer sb, int indent) {
try {
//getLogger().debug("parseWhereConditionTerm(): found condition");
sb.append(getIndent(indent) + composeExpr(element.getAttribute("expr")) + "\n");
} catch(Exception e) {
e.printStackTrace();
}
}
private String getIndent(int indent) {
String rval = "";
for (int f = 0; f < indent; f++) {
rval = rval + " ";
}
return rval;
}
private String composeExpr(String expr) {
String[] strarr = null;
String[] result = null;
String method = null;
String operator = null;
//getLogger().debug("expr=" + expr);
try {
Enumeration enum = mOperators.keys();
//getLogger().debug("mOperators.size()=" + mOperators.size());
while(enum.hasMoreElements()) {
operator = (String)enum.nextElement();
//getLogger().debug("matching operator = " + operator);
//getLogger().debug("matching function = " + mOperators.get(operator));
RE re = new RE(operator);
strarr = re.split(expr);
if(strarr.length > 1) {
method = (String)mOperators.get(operator);
//getLogger().debug("matched function = " + method);
result = strarr;
}
}
method = "testHelper." + method + "(columnCheck.getColumn(row,\"" + result[0]
+ "\"),columnCheck.getColumn(row,\"" + result[1] + "\"),row)";
//getLogger().debug("method=" + method);
} catch (RESyntaxException rse) {
//getLogger().error("composeExpr(): RESyntaxException",rse);
} catch (Exception e) {
//getLogger().error("composeExpr(): Exception",e);
}
return method;
}
private NodeList getSubRootNodes(Element rootElement) {
return rootElement.getChildNodes();
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>