You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by br...@apache.org on 2004/07/28 20:03:28 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql SqlQueryStatement.java
brj 2004/07/28 11:03:28
Modified: src/test/org/apache/ojb/broker Tag: OJB_1_0_RELEASE
QueryTest.java
src/java/org/apache/ojb/broker/accesslayer/sql Tag:
OJB_1_0_RELEASE SqlQueryStatement.java
Log:
do not generate sql for empty criteria
Revision Changes Path
No revision
No revision
1.61.2.2 +43 -1 db-ojb/src/test/org/apache/ojb/broker/QueryTest.java
Index: QueryTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/QueryTest.java,v
retrieving revision 1.61.2.1
retrieving revision 1.61.2.2
diff -u -r1.61.2.1 -r1.61.2.2
--- QueryTest.java 26 Jul 2004 15:49:52 -0000 1.61.2.1
+++ QueryTest.java 28 Jul 2004 18:03:28 -0000 1.61.2.2
@@ -374,7 +374,6 @@
*/
public void testNullCriteria()
{
-
Criteria crit = new Criteria();
crit.addIsNull("firstname");
Query q = QueryFactory.newQuery(Person.class, crit);
@@ -382,9 +381,52 @@
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertTrue(results.size() == 0);
+ }
+
+ /**
+ * Add an empty criteria
+ */
+ public void testEmptyORed() throws Exception
+ {
+ Collection result;
+ Criteria crit1 = new Criteria();
+ crit1.addEqualTo("articleName", "Hamlet");
+ crit1.addEqualTo("productGroup.description", "Strange Books...");
+
+ Criteria crit2 = new Criteria();
+
+ crit1.addOrCriteria(crit2);
+ QueryByCriteria q = QueryFactory.newQuery(Article.class, crit1);
+
+ result = broker.getCollectionByQuery(q);
+ assertNotNull(result);
+ int count = broker.getCount(q);
+ assertEquals(count, result.size());
}
+ /**
+ * Add an empty criteria
+ */
+ public void testEmptyANDed() throws Exception
+ {
+ Collection result;
+ Criteria crit1 = new Criteria();
+ crit1.addEqualTo("articleName", "Hamlet");
+ crit1.addEqualTo("productGroup.description", "Strange Books...");
+
+ Criteria crit2 = new Criteria();
+
+ crit1.addAndCriteria(crit2);
+ QueryByCriteria q = QueryFactory.newQuery(Article.class, crit1);
+
+ result = broker.getCollectionByQuery(q);
+ assertNotNull(result);
+
+ int count = broker.getCount(q);
+ assertEquals(count, result.size());
+ }
+
/**
* test Between Criteria
*/
No revision
No revision
1.75.2.2 +12 -9 db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
Index: SqlQueryStatement.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java,v
retrieving revision 1.75.2.1
retrieving revision 1.75.2.2
diff -u -r1.75.2.1 -r1.75.2.2
--- SqlQueryStatement.java 26 Jul 2004 15:49:51 -0000 1.75.2.1
+++ SqlQueryStatement.java 28 Jul 2004 18:03:28 -0000 1.75.2.2
@@ -616,20 +616,22 @@
Object o = e.nextElement();
if (o instanceof Criteria)
{
- String addAtStart;
- String addAtEnd;
Criteria pc = (Criteria) o;
+
+ if (pc.isEmpty())
+ {
+ continue; //skip empty criteria
+ }
+
+ String addAtStart = "";
+ String addAtEnd = "";
+
// need to add parenthesises?
if (pc.isEmbraced())
{
addAtStart = " (";
addAtEnd = ")";
- }
- else
- {
- addAtStart = "";
- addAtEnd = "";
- }
+ }
switch (pc.getType())
{
@@ -676,6 +678,7 @@
statement.insert(0, " NOT (");
statement.append(")");
}
+
return (statement.length() == 0 ? null : statement.toString());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org