You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by Scott Eade <se...@backstagetech.com.au> on 2004/06/19 06:32:31 UTC
Re: Torque: Criteria and NOT_LIKE
Thanks for the patch Clemens. Including test cases makes things much
easier for everyone.
Scott
--
Scott Eade
Backstage Technologies Pty. Ltd.
http://www.backstagetech.com.au
Clemens Fuchslocher wrote:
>Scott Eade wrote:
>
>[...]
>
>
>>One think you could do that would be of a great help would be to add to
>>the Torque runtime test suite some tests that illustrate this problem -
>>if you don't do it then I will have to and that will slow me down
>>further. I really welcome your help and contribution and I hope to be
>>able to get to it very soon.
>>
>>
>
>I have added two new test cases to org.apache.torque.util.CriteriaTest:
>
>testLikeWithoutWildcards()
> This test case verifies if the Criteria.LIKE comparison type will get
> replaced through Criteria.EQUAL if there are no SQL wildcards in the
> given string. This is already working properly. No work is needed. :-)
>
>testNotLikeWithoutWildcards()
> This test case verifies if the Criteria.NOT_LIKE comparison type will
> get replaced through Criteria.NOT_EQUAL if there are no SQL wildcards
> in the given string. This test case fails because the NOT_LIKE operator
> is also replaced through EQUAL in the buildLike() method instead of
> NOT_LIKE.
>
>See the attached CriteriaTest.java.patch file.
>
>Finally the attached SqlExpression.java.patch file contains a patch which
>will correct the behavior of the buildLike() method. Now the method will
>also doing the correct thing when handling with NOT_LIKE instead of LIKE.
>
>Have a nice weekend!
>
>
>------------------------------------------------------------------------
>
>Index: SqlExpression.java
>===================================================================
>RCS file: /home/cvspublic/db-torque/src/java/org/apache/torque/util/SqlExpression.java,v
>retrieving revision 1.26
>diff -u -r1.26 SqlExpression.java
>--- SqlExpression.java 22 Feb 2004 06:16:35 -0000 1.26
>+++ SqlExpression.java 21 May 2004 11:49:37 -0000
>@@ -381,6 +381,11 @@
> // use = (equals). Wildcards can be escaped by prepending
> // them with \ (backslash).
> String equalsOrLike = " = ";
>+ if (comparison.equals (Criteria.NOT_LIKE))
>+ {
>+ equalsOrLike = " " + Criteria.NOT_EQUAL + " ";
>+ }
>+
> int position = 0;
> StringBuffer sb = new StringBuffer();
> while (position < criteria.length())
>
>
>------------------------------------------------------------------------
>
>Index: CriteriaTest.java
>===================================================================
>RCS file: /home/cvspublic/db-torque/src/test/org/apache/torque/util/CriteriaTest.java,v
>retrieving revision 1.21
>diff -u -r1.21 CriteriaTest.java
>--- CriteriaTest.java 22 Feb 2004 06:22:27 -0000 1.21
>+++ CriteriaTest.java 21 May 2004 11:47:20 -0000
>@@ -431,6 +431,59 @@
> }
>
> /**
>+ * This test case verifies if the Criteria.LIKE comparison type will
>+ * get replaced through Criteria.EQUAL if there are no SQL wildcards
>+ * in the given value.
>+ */
>+ public void testLikeWithoutWildcards()
>+ {
>+ Criteria c = new Criteria()
>+ .add("TABLE.COLUMN", (Object) "no wildcards", Criteria.LIKE);
>+
>+ String expect = "SELECT FROM TABLE WHERE TABLE.COLUMN = 'no wildcards'";
>+
>+ String result = null;
>+ try
>+ {
>+ result = BasePeer.createQueryString(c);
>+ }
>+ catch (TorqueException e)
>+ {
>+ e.printStackTrace();
>+ fail("TorqueException thrown in BasePeer.createQueryString()");
>+ }
>+
>+ assertEquals(expect, result);
>+ }
>+
>+ /**
>+ * This test case verifies if the Criteria.NOT_LIKE comparison type will
>+ * get replaced through Criteria.NOT_EQUAL if there are no SQL wildcards
>+ * in the given value.
>+ */
>+ public void testNotLikeWithoutWildcards()
>+ {
>+ Criteria c = new Criteria()
>+ .add("TABLE.COLUMN", (Object) "no wildcards", Criteria.NOT_LIKE);
>+
>+ String firstExpect = "SELECT FROM TABLE WHERE TABLE.COLUMN != 'no wildcards'";
>+ String secondExpect = "SELECT FROM TABLE WHERE TABLE.COLUMN <> 'no wildcards'";
>+
>+ String result = null;
>+ try
>+ {
>+ result = BasePeer.createQueryString(c);
>+ }
>+ catch (TorqueException e)
>+ {
>+ e.printStackTrace();
>+ fail("TorqueException thrown in BasePeer.createQueryString()");
>+ }
>+
>+ assertTrue(result.equals(firstExpect) || result.equals(secondExpect));
>+ }
>+
>+ /**
> * test for TRQS25
> */
> /*
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org