You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by le...@apache.org on 2001/04/26 11:00:32 UTC

cvs commit: jakarta-turbine/src/java/org/apache/turbine/util/db Criteria.java

leonm       01/04/26 02:00:32

  Modified:    src/java/org/apache/turbine/util/db Criteria.java
  Log:
  Some utility methods added to Criterion for doPSSelect in BasePeer.
  
  Revision  Changes    Path
  1.25      +114 -1    jakarta-turbine/src/java/org/apache/turbine/util/db/Criteria.java
  
  Index: Criteria.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine/src/java/org/apache/turbine/util/db/Criteria.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Criteria.java	2001/04/26 02:07:53	1.24
  +++ Criteria.java	2001/04/26 09:00:32	1.25
  @@ -57,9 +57,11 @@
   // Java Core Classes
   import java.util.*;
   import java.io.*;
  +import java.lang.reflect.Array;
   
   // Turbine Classes
   import org.apache.turbine.om.ObjectKey;
  +import org.apache.turbine.om.DateKey;
   import org.apache.turbine.util.*;
   import org.apache.turbine.util.db.adapter.DB;
   import org.apache.turbine.services.db.*;
  @@ -79,7 +81,7 @@
    * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
    * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
    * @author <a href="mailto:eric@dobbse.net">Eric Dobbs</a>
  - * @version $Id: Criteria.java,v 1.24 2001/04/26 02:07:53 jmcnally Exp $
  + * @version $Id: Criteria.java,v 1.25 2001/04/26 09:00:32 leonm Exp $
    */
   public class Criteria extends Hashtable
   {
  @@ -1938,6 +1940,117 @@
               }
               sb.append(')');
           }
  +
  +
  +        /**
  +         * Appends a Prepared Statement representation of the Criterion onto the buffer.
  +         *
  +         * @param sb The stringbuffer that will receive the Prepared Statement
  +         * @param params A list to which Prepared Statement parameters will be appended
  +         */
  +        public void appendPsTo(StringBuffer sb, List params)
  +        {
  +            if (column == null || value == null)
  +            {
  +                return;
  +            }
  +            
  +            sb.append('(');
  +            if ( CUSTOM == comparison ) 
  +            {
  +                if ( !"".equals(value) )
  +                {
  +                    sb.append((String)value);
  +                }
  +            }
  +            else 
  +            {
  +                String field = null;
  +                if  (table == null) 
  +                {
  +                    field = column;
  +                }
  +                else 
  +                {
  +                    field = new StringBuffer(
  +                        table.length() + 1 + column.length())
  +                        .append(table).append('.').append(column)
  +                        .toString(); 
  +                }
  +                
  +                if ( comparison.equals(Criteria.IN) || comparison.equals(Criteria.NOT_IN) )
  +                {
  +                    sb.append (field)
  +                      .append (comparison)
  +                      .append (" ? ");
  +
  +                    StringStackBuffer inClause = new StringStackBuffer();
  +
  +                    if (value instanceof Vector)
  +                    {
  +                        value = ((Vector)value).toArray (new Object[0]);
  +                    }   
  +                        
  +                    for (int i = 0; i < Array.getLength(value); i++)
  +                    {
  +                        Object item = Array.get(value, i);
  +        
  +                        inClause.add(SqlExpression.processInValue(item, ignoreCase, db));
  +                    }
  +                    
  +                    StringBuffer inString = new StringBuffer();
  +                    inString.append('(').append(inClause.toString(",")).append(')');
  +                               
  +                    params.add (inString.toString());
  +                }
  +                else
  +                {
  +                    if (ignoreCase)
  +                    {
  +                        sb.append (db.ignoreCase(field))
  +                          .append (comparison)
  +                          .append (db.ignoreCase("?"));
  +                    }
  +                    else  
  +                    {
  +                        sb.append (field)
  +                          .append (comparison)
  +                          .append (" ? ");
  +                    }
  +                    
  +                    if (value instanceof java.util.Date)
  +                    {
  +                        params.add ( new java.sql.Date (((java.util.Date)value).getTime()) );
  +                    }
  +                    else if (value instanceof DateKey)
  +                    {
  +                        params.add ( new java.sql.Date (((DateKey)value).getDate().getTime()) );
  +                    }
  +                    else
  +                    {
  +                        params.add (value.toString());
  +                    }
  +                }
  +                
  +                  
  +            }
  +        
  +            if (or != null)
  +            {
  +                sb.append(OR);
  +                or.appendTo(sb);
  +            }
  +            
  +            if (and != null)
  +            {
  +                sb.append(AND);
  +                and.appendTo(sb);
  +            }
  +            sb.append(')');
  +        }
  +
  +
  +
           
           /**
            * Build a string representation of the Criterion.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org