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