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>