fedor       01/05/08 19:54:51

  Added:       proposals/fedor/nqm And.java Comparison.java
                        ComplexCondition.java Condition.java Equal.java
                        Less.java More.java NotEqual.java Or.java
                        Query.java SQLCode.java SQLConstants.java
                        Statement.java
  Log:
  New Query Model proposal
  
  Revision  Changes    Path
  1.1                  jakarta-turbine/proposals/fedor/nqm/And.java
  
  Index: And.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: And.java,v 1.1 2001/05/09 02:54:49 fedor Exp $
   */
  public class And extends ComplexCondition
  {
      public static final String OPERATOR = " AND ";
  
      public And()
      {
          super();
      }
  
      public And(Condition condition)
      {
          super(condition);
      }
  
      public And(Collection conditions)
      {
          super(conditions);
      }
  
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Comparison.java
  
  Index: Comparison.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  import java.util.Set;
  import java.util.HashSet;
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *  A simple column condition such as "column=3" "column >=5" "column LIKE
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Comparison.java,v 1.1 2001/05/09 02:54:49 fedor Exp $
   */
  public abstract class Comparison implements Condition
  {
      public static final String QUOTE = "'";
      public static final char DOT = '.';
  
      private String column;
      private Object value;
      private boolean quoteValue = true;
      private boolean autoQuoteValue = true;
  
      /**
       *  Default constructor
       */
      public Comparison(String column, Object value)
      {
          this.column = column;
          this.value = value;
          this.autoQuoteValue = true;
      }
  
      /**
       *  Constructor allowing to explicitly specify whether value should be
       *  quoted
       */
      public Comparison(String column, Object value, boolean quoteValue)
      {
          this.column = column;
          this.value = value;
          this.autoQuoteValue = false;
          this.quoteValue = quoteValue;
      }
  
      /**
       *  returns comparison operator
       */
      public abstract String getOperator(DB db);
  
      /**
       *  method returns SQL representation of the condition
       *
       */
      public StringStackBuffer toSQL(DB db)
      {
          StringStackBuffer ssb = new StringStackBuffer()
                                      .add(column)
                                      .add(getOperator(db));
          if ((autoQuoteValue && (value instanceof Number)) || !quoteValue)
          {
              ssb.add(value.toString());
          }
          else
          {
              ssb.add(QUOTE)
                  .add(value.toString())
                  .add(QUOTE);
          }
      }
  
      public Set getTables()
      {
          int dot = column.indexOf(DOT);
          if (dot<0)
          {
              return null;
          }
          else
          {
              return new HashSet(1).add(column.substring(0,dot).toUpperCase());
          }
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/ComplexCondition.java
  
  Index: ComplexCondition.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  import java.util.Set;
  import java.util.HashSet;
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: ComplexCondition.java,v 1.1 2001/05/09 02:54:49 fedor Exp $
   */
  public abstract class ComplexCondition implements Condition
  {
      public static final String OPEN_PARENS = "(";
      public static final String CLOSE_PARENS = ")";
  
      private Vector conditions;
  
      public ComplexCondition()
      {
          this.conditions = new Vector();
      }
  
      public ComplexCondition(Condition condition)
      {
          this.conditions = new Vector().add(condition);
      }
  
      public ComplexCondition(Collection conditions)
      {
          this.conditions = new Vector(conditions);
      }
  
      public abstract String getOperator(DB db);
  
      public ComplexCondition add(Condition condition)
      {
          this.conditions.add(condition);
          return this;
      }
  
      public ComplexCondition addAll(Collection conditions)
      {
          this.conditions.addAll(conditions);
          return this;
      }
      /**
       *  method returns SQL representation of the condition
       *
       */
      public StringStackBuffer toSQL(DB db)
      {
          if (this.conditions.size()==0)
          {
              return null;
          }
          StringStackBuffer ssb = new StringStackBuffer()
                                      .add(this.conditions.get(0).toSQL(db));
          for (int i=1; i<this.conditions.size(); i++)
          {
              ssb.add(getOperator());
              Condition cond = this.conditions.get(i);
              if (cond instanceof ComplexCondition)
              {
                  ssb.add(OPEN_PARENS)
                      .addAll(this.conditions.get(i).toSQL(db))
                      .add(CLOSE_PARENS);
              }
              ssb.addAll(this.conditions.get(i).toSQL(db));
          }
          return ssb;
      }
  
      public Set getTables()
      {
          HashSet tables = new HashSet(this.conditions.size());
          for (int i=0; i<this.conditions.size(); i++)
          {
              tables.addAll(this.conditions.get(i).getTables());
          }
          return tables;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Condition.java
  
  Index: Condition.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *  This interface represents a condition in where clause
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Condition.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public interface Condition extends SQLCode
  {
      /**
       *  returns the set of tables involved in this condition
       *
       */
      public Set getTables();
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Equal.java
  
  Index: Equal.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *  A simple column condition such as "column=3" "column >=5" "column LIKE
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Equal.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class Equal extends Comparison
  {
      public static String OPERATOR="=";
  
      /**
       *  Default constructor
       */
      public Equal(String column, Object value)
      {
          super(column, value);
      }
  
      /**
       *  Constructor allowing to explicitly specify whether value should be
       *  quoted
       */
      public Equal(String column, Object value, boolean quoteValue)
      {
          super(column, value, quoteValue)
      }
  
      /**
       *  returns comparison operator (=)
       */
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Less.java
  
  Index: Less.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Less.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class Less extends Comparison
  {
      public static final String OPERATOR="<";
  
      /**
       *  Default constructor
       */
      public Less(String column, Object value)
      {
          super(column, value);
      }
  
      /**
       *  Constructor allowing to explicitly specify whether value should be
       *  quoted
       */
      public Less(String column, Object value, boolean quoteValue)
      {
          super(column, value, quoteValue)
      }
  
      /**
       *  returns comparison operator (!=)
       */
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/More.java
  
  Index: More.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *  
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: More.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class More extends Comparison
  {
      public static final String OPERATOR=">";
  
      /**
       *  Default constructor
       */
      public More(String column, Object value)
      {
          super(column, value);
      }
  
      /**
       *  Constructor allowing to explicitly specify whether value should be
       *  quoted
       */
      public More(String column, Object value, boolean quoteValue)
      {
          super(column, value, quoteValue)
      }
  
      /**
       *  returns comparison operator (!=)
       */
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/NotEqual.java
  
  Index: NotEqual.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *  
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: NotEqual.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class NotEqual extends Comparison
  {
      public static String OPERATOR="!=";
  
      /**
       *  Default constructor
       */
      public NotEqual(String column, Object value)
      {
          super(column, value);
      }
  
      /**
       *  Constructor allowing to explicitly specify whether value should be
       *  quoted
       */
      public NotEqual(String column, Object value, boolean quoteValue)
      {
          super(column, value, quoteValue)
      }
  
      /**
       *  returns comparison operator (!=)
       */
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Or.java
  
  Index: Or.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Or.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class Or extends ComplexCondition
  {
      public static final String OPERATOR = " OR ";
      public Or()
      {
          super();
      }
  
      public Or(Condition condition)
      {
          super(condition);
      }
  
      public Or(Collection conditions)
      {
          super(conditions);
      }
  
      public String getOperator(DB db)
      {
          return OPERATOR;
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Query.java
  
  Index: Query.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Query.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public class Query extends Statement
  {
      public static final String SELECT = SQLConstants.SELECT;
      public static final String COMMA = SQLConstants.COMMA;
      public static final String ASTERISK = SQLConstants.ASTERISK;
      public static final String DOT = SQLConstants.DOT;
      public static final String ORDER_BY  = SQLConstants.ORDER_BY;
  
      private Condition condition = null;
      private Set tables = new HashSet();
      private Vector selectColumns = new Vector();
      private String selectTable = null;
      private Vector orderBys = new Vector();
  
      public Query()
      {
          super();
      }
  
      public Query(Condition condition)
      {
          super(condition);
      }
  
      public Query setSelectTable(String selectTable)
      {
          this.selectTable = selectTable;
          return this;
      }
  
      public Query addSelectColumn(String selectColumn)
      {
          this.selectColumns.add(selectColumn);
          return this;
      }
  
      public Query addOrderByColumn(String column)
      {
          return addOrderByColumn(new OrderBy(column));
      }
  
      public Query addOrderByColumn(String column, String direction)
      {
          return addOrderByColumn(new OrderBy(column, direction));
      }
  
      public Query addOrderByColumn(OrderBy orderBy)
      {
          orderBys.add(orderBy);
          return this;
      }
  
      public StringStackBuffer toSQL(DB db)
      {
          StringStackBuffer query = new StringStackBuffer();
          query.add(SELECT);
          if (!selectColumns.isEmpty())
          {
              query.add((String)selectColumns.get(0));
              for (int i=1; i<selectColumns.size(); i++)
              {
                  query.add(COMMA)
                      .add((String)selectColumns.get(i));
              }
          }
          else
          {
              if (selectTable!=null)
              {
                  query.add(selectTable).add(DOT);
              }
              query.add(ASTERISK);
          }
          query.addAll(fromClause(db));
          query.addAll(whereClause(db));
          if (!orderBys.isEmpty())
          {
              query.add(ORDER_BY).addAll(((OrderBy)orderBys.get(0)).toSQL(db));
              for(int i=1; i<orderBys.size(); i++)
              {
                  query.add(COMMA).addAll(((OrderBy)orderBys.get(i)).toSQL(db));
              }
          }
      }
  
      public class OrderBy implements SQLCode
      {
          public static final String ASC = SQLConstants.ASC;
          public static final String DESC = SQLConstants.DESC;
  
          private String column;
          private String direction;
  
          public OrderBy(String column)
          {
              this(column, ASC);
          }
  
          public OrderBy(String column, String direction)
          {
              this.column = column;
              this.direction = direction;
          }
  
          public StringStackBuffer toSQL(DB db)
          {
              return new StringStackBuffer().add(column).add(direction);
          }
      }
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/SQLCode.java
  
  Index: SQLCode.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Turbine" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: SQLCode.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public interface SQLCode
  {
      public StringStackBuffer toSQL(DB db);
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/SQLConstants.java
  
  Index: SQLConstants.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: SQLConstants.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public interface SQLConstants
  {
      public static final String SELECT = "SELECT ";
      public static final String COMMA = ",";
      public static final String ASTERISK = "*";
      public static final String DOT = ".";
      public static final String ASC = " ASC";
      public static final String DESC = " DESC";
      public static final String WHERE = " WHERE ";
      public static final String FROM  = " FROM ";
      public static final String ORDER_BY  = " ORDER BY ";
  }
  
  
  
  1.1                  jakarta-turbine/proposals/fedor/nqm/Statement.java
  
  Index: Statement.java
  ===================================================================
  package org.apache.turbine.util.db.nqm;
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", nor may "Apache" appear in their name, without 
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  // Java Core Classes
  
  // Turbine Classes
  import org.apache.turbine.util.db.adapter.DB;
  import org.apache.turbine.util.StringStackBuffer;
  
  /**
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Fedor Karpelevitch</a>
   * @version $Id: Statement.java,v 1.1 2001/05/09 02:54:50 fedor Exp $
   */
  public abstract class Statement implements SQLCode
  {
      public static final String WHERE = SQLConstants.WHERE;
      public static final String FROM  = SQLConstants.FROM;
      public static final String COMMA  = SQLConstants.COMMA;
  
      private Condition condition = null;
      private Set tables = new HashSet();
  
      public Statement()
      {
      }
  
      public Statement(Condition condition)
      {
          this();
          setCondition(condition);
      }
  
      protected StringStackBuffer whereClause(DB db)
      {
          StringStackBuffer clause = new StringStackBuffer();
          if (condition!=null)
          {
              clause.add(WHERE).addAll(condition.toSQL(db))
          }
          return clause;
      }
  
      protected StringStackBuffer fromClause(DB db)
      {
          StringStackBuffer clause = new StringStackBuffer();
          if (!tables.empty())
          {
              Iterator i=tables.iterator;
              clause.add(FROM).add((String)i.next());
              while(i.hasNext())
              {
                  clause.add(COMMA).add((String)i.next());
              }
          }
          return clause;
      }
  
      public Statement setCondition(Condition condition)
      {
          this.condition = condition;
          this.tables.addAll(condition.getTables());
      }
  
      public Condition getCondition()
      {
          return this.condition;
      }
  
      public abstract StringStackBuffer toSQL(DB db);
  }
  
  
  

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

Reply via email to