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