You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/11/17 11:48:24 UTC

svn commit: r718217 - in /jackrabbit/branches/1.5: ./ jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/ jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/ jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/

Author: jukka
Date: Mon Nov 17 02:48:22 2008
New Revision: 718217

URL: http://svn.apache.org/viewvc?rev=718217&view=rev
Log:
1.5: Merged revision 713214 (JCR-1844). Ignored revisions 713956, 713958 and 713964.

Modified:
    jackrabbit/branches/1.5/   (props changed)
    jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/Filter.java
    jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/FilterImpl.java
    jackrabbit/branches/1.5/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java

Propchange: jackrabbit/branches/1.5/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 17 02:48:22 2008
@@ -1,2 +1,2 @@
 /jackrabbit/branches/1.3:631261
-/jackrabbit/trunk:703899-704158,704165,704167,704324,704358,704361,704864,704933,704939,705010,705033,705243,705496,705522,705579,705925,705932,705934,705937-705938,705961,706242,706273,706285-706286,706562,706606,706649,706655,706660,706697,706918,707303-707304,707307,707310,707630,708206,708598,708609,708613,708619,708634,708840,708863,708909,708929,708943,709115,709142,709207,709211,710047,711238,711566-711567,711595,711841-711843,712984-712985,713037,713059,713065,713072,713076,713162
+/jackrabbit/trunk:703899-704158,704165,704167,704324,704358,704361,704864,704933,704939,705010,705033,705243,705496,705522,705579,705925,705932,705934,705937-705938,705961,706242,706273,706285-706286,706562,706606,706649,706655,706660,706697,706918,707303-707304,707307,707310,707630,708206,708598,708609,708613,708619,708634,708840,708863,708909,708929,708943,709115,709142,709207,709211,710047,711238,711566-711567,711595,711841-711843,712984-712985,713037,713059,713065,713072,713076,713162,713214,713956,713958,713964

Modified: jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/Filter.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/Filter.java?rev=718217&r1=718216&r2=718217&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/Filter.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/Filter.java Mon Nov 17 02:48:22 2008
@@ -17,7 +17,6 @@
 package org.apache.jackrabbit.ocm.query;
 
 
-
 /**
  *
  * JCR Filter interface.
@@ -79,7 +78,7 @@
 	Filter addGreaterThan(String arg0, Object arg1);
 
 	Filter addLessOrEqualThan(String arg0, Object arg1);
-	
+
 	Filter addLessThan(String arg0, Object arg1);
 
 	Filter addLike(String arg0, Object arg1);
@@ -89,14 +88,16 @@
 	Filter addNotNull(String arg0);
 
 	Filter addIsNull(String arg0);
-	
+
+	Filter addOrFilter(String fieldAttributeName, String[] valueList);
+
 	Filter addOrFilter(Filter arg0);
 
 	Filter addAndFilter(Filter filter);
-	
+
 	Filter addJCRExpression(String jcrExpression);
-	
+
     Class getFilterClass();
-	
+
 
 }

Modified: jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/FilterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/FilterImpl.java?rev=718217&r1=718216&r2=718217&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/FilterImpl.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/query/impl/FilterImpl.java Mon Nov 17 02:48:22 2008
@@ -18,6 +18,7 @@
 package org.apache.jackrabbit.ocm.query.impl;
 
 
+
 import java.util.Map;
 
 import javax.jcr.ValueFactory;
@@ -221,6 +222,18 @@
         return this;
     }
 
+    public Filter addOrFilter(String fieldAttributeName, String[] valueList) {
+        String jcrExpression = "";
+        for(Object object: valueList){
+        jcrExpression =	"@" + this.getJcrFieldName(fieldAttributeName) + " = "
+        + this.getStringValue(fieldAttributeName, object);
+        orExpression(jcrExpression);
+        }
+        addExpression(jcrExpression);
+        return this;
+    }
+    
+    
     /**
      * @see org.apache.jackrabbit.ocm.query.Filter#addOrFilter(org.apache.jackrabbit.ocm.query.Filter)
      */
@@ -266,6 +279,13 @@
         return this;
     }
 
+    public Filter orJCRExpression(String jcrExpression) {
+        orExpression(jcrExpression);
+
+         return this;
+     }
+   
+    
     private String getJcrFieldName(String fieldAttribute) {
         String jcrFieldName = classDescriptor.getJcrName(fieldAttribute);
         if (jcrFieldName == null) {
@@ -315,6 +335,15 @@
         this.jcrExpression += jcrExpression ;
     }
 
+    private void orExpression(String jcrExpression) {
+
+	     if (this.jcrExpression.length() >0) {
+         	this.jcrExpression += " or ";
+	     }
+	     this.jcrExpression += jcrExpression ;
+    }
+    
+    
 	public String toString() {
 		return getJcrExpression();
 	}

Modified: jackrabbit/branches/1.5/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.5/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java?rev=718217&r1=718216&r2=718217&view=diff
==============================================================================
--- jackrabbit/branches/1.5/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java (original)
+++ jackrabbit/branches/1.5/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java Mon Nov 17 02:48:22 2008
@@ -195,6 +195,69 @@
 
     }
 
+    /**
+     * Build an or expression within a single filter
+     * @author Shrirang Edgaonkar
+     */
+    public void testGetObjectsOrForSingleFilter() {
+
+        try {
+
+            // Build the Query Object
+            QueryManager queryManager = this.getQueryManager();
+            Filter filter1 = queryManager.createFilter(Paragraph.class);
+            filter1.addOrFilter("text", new String[]{"Para 1","Para 2"});
+            filter1.setScope("/test/");
+
+            Query query = queryManager.createQuery(filter1);
+
+            ObjectContentManager ocm = this.getObjectContentManager();
+            Collection result = ocm.getObjects(query);
+            assertEquals("Invalid number of objects - should be = 2", 2, result.size());
+
+            Paragraph[] paragraphs = (Paragraph[]) result.toArray(new Paragraph[result.size()]);
+            assertTrue("Invalid paragraph found", this.containsText(paragraphs,"Para 1"));
+            assertTrue("Invalid paragraph found", this.containsText(paragraphs,"Para 2"));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+
+    }
+
+    /**
+     * Build an or expression within a single filter
+     * @author Shrirang Edgaonkar
+     */
+    public void testGetObjectsOrWithAndForSingleFilter() {
+
+        try {
+
+            // Build the Query Object
+            QueryManager queryManager = this.getQueryManager();
+            Filter filter1 = queryManager.createFilter(Paragraph.class);
+            filter1.addOrFilter("text", new String[]{"Para 1","Another Para "}).addLike("text", "Para%");
+            filter1.setScope("/test/");
+
+            Query query = queryManager.createQuery(filter1);
+
+            ObjectContentManager ocm = this.getObjectContentManager();
+            Collection result = ocm.getObjects(query);
+            assertEquals("Invalid number of objects - should be = 1", 1, result.size());
+
+            Paragraph[] paragraphs = (Paragraph[]) result.toArray(new Paragraph[result.size()]);
+            assertTrue("Invalid paragraph found", this.containsText(paragraphs,"Para 1"));
+            //assertTrue("Invalid paragraph found", this.containsText(paragraphs,"Para 2"));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+
+    }
+   
+    
     public void testGetObjectOrderBy() {
 
         try {