froehlich 01/11/14 07:54:19 Modified: apps/db/src/java/org/apache/avalon/db/basic/actions BasicSelect.java Log: working on where statement Revision Changes Path 1.21 +36 -5 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicSelect.java Index: BasicSelect.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicSelect.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- BasicSelect.java 2001/11/13 17:25:56 1.20 +++ BasicSelect.java 2001/11/14 15:54:18 1.21 @@ -18,6 +18,7 @@ import org.apache.avalon.db.basic.results.BasicColumns; import org.apache.avalon.db.basic.results.BasicRowSet; import org.apache.avalon.db.utils.RhinoHelper; +import org.apache.avalon.db.utils.StringUtils; import org.apache.avalon.db.data.ValidationException; import org.apache.avalon.framework.logger.LogEnabled; @@ -27,6 +28,7 @@ import java.util.Vector; import java.util.Iterator; +import java.util.StringTokenizer; /** @@ -48,6 +50,12 @@ private String[] mCols; private String[] mTablenames; + final static String OPERATORS[][] = { + {"=","<",">","<>","like"}, + {"mequals","smaller","greater","unequal","like"} + }; + + /** * The Constructor * @@ -113,7 +121,9 @@ RhinoHelper rh = new RhinoHelper(); Matched rc = new Matched(); rh.addBean("row",row); + rh.addBean("my",this); rh.addBean("rc",rc); + getLogger().debug("mWhereBuffer.toString()" + mWhereBuffer.toString()); rh.executeAction("if (" + mWhereBuffer.toString() + ") { rc.itDidMatch(); } "); return rc.didItMatch(); } else { @@ -123,8 +133,8 @@ public class Matched { private boolean boolval = false; - public void itDidMatch() { - boolval = true; + public void itDidMatch(boolean b) { + boolval = b; } boolean didItMatch() { return boolval; @@ -181,8 +191,6 @@ } mWhereBuffer = whereBuffer; getLogger().debug("sb=[\n" + whereBuffer + "\n]"); - - } private String[] parseSelect(Element rootElement) throws ActionException { @@ -280,7 +288,7 @@ try { getLogger().debug("parseWhereConditionTerm(): found condition"); //Node nextSibling = (Node)element.getNextSibling(); - sb.append(getIndent(indent) + element.getAttribute("expr") + "\n"); + sb.append(getIndent(indent) + composeExpr(element.getAttribute("expr")) + "\n"); //parseWhereTerm((Element)nextSibling,sb); } catch(Exception e) { e.printStackTrace(); @@ -295,9 +303,32 @@ return rval; } + private String composeExpr(String expr) { + String[] strarr = null; + String[] result = null; + String method = null; + + for (int i=0; i<OPERATORS.length; i++) { + strarr = StringUtils.split(expr,OPERATORS[0][i]); + if(strarr.length > 1) { + method = OPERATORS[i+1][0]; + result = strarr; + } + } + method = "my." + method + "(row.getValue(\"" + result[0] + "\"),\"" + result[1] + "\")"; + getLogger().debug("method=" + method); + return method; + } + private NodeList getSubRootNodes(Element rootElement) { return rootElement.getChildNodes(); + } + + public boolean mequals(String leftexpr,String rightexpr) { + getLogger().debug("leftexpr=" + leftexpr); + getLogger().debug("rightexpr=" + rightexpr); + return leftexpr.equals(rightexpr); } public void execute(Object[] params) throws ActionException {
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>