You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2012/08/08 22:42:53 UTC

svn commit: r1370955 - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/types/ test/java/org/apache/chemistry/opencmis/inmemory/query/

Author: jens
Date: Wed Aug  8 20:42:53 2012
New Revision: 1370955

URL: http://svn.apache.org/viewvc?rev=1370955&view=rev
Log:
add support for alias name on SCORE() in select, set query name for SCORE() to SEARCH_SCORE, add unit test for score()

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java?rev=1370955&r1=1370954&r2=1370955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java Wed Aug  8 20:42:53 2012
@@ -302,9 +302,15 @@ public class PropertyCreationHelper {
         // add functions:
         BindingsObjectFactory objFactory = new BindingsObjectFactoryImpl();
         for (Entry<String, String> funcEntry : requestedFuncs.entrySet()) {
-            PropertyDecimal pd = objFactory.createPropertyDecimalData(funcEntry.getValue(), BigDecimal.valueOf(1.0));
-            // fixed dummy value
-            mappedProperties.put(funcEntry.getKey(), pd);
+        	String queryName;
+        	if (funcEntry.getValue().equals("SCORE")) {
+        		queryName = "SEARCH_SCORE";
+        		if (!funcEntry.getKey().equals("SCORE"))
+        			queryName = funcEntry.getKey();
+                PropertyDecimal pd = objFactory.createPropertyDecimalData(queryName, BigDecimal.valueOf(1.0));
+                // fixed dummy value
+                mappedProperties.put(funcEntry.getKey(), pd);
+        	}
         }
 
         Properties props = new PropertiesImpl(mappedProperties.values());

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java?rev=1370955&r1=1370954&r2=1370955&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/query/EvalQueryTest.java Wed Aug  8 20:42:53 2012
@@ -29,6 +29,8 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.math.BigDecimal;
+
 import org.apache.chemistry.opencmis.commons.PropertyIds;
 import org.apache.chemistry.opencmis.commons.data.ObjectData;
 import org.apache.chemistry.opencmis.commons.data.ObjectList;
@@ -825,6 +827,16 @@ public class EvalQueryTest extends Abstr
         assertTrue(resultContains("delta", res));
     }
 
+    @Test
+    public void testContainsAndScore() {
+        String statement = "SELECT cmis:objectId,cmis:name,SCORE() FROM " + COMPLEX_TYPE + " WHERE CONTAINS('dog')";
+        ObjectList res = doQuery(statement);
+        assertEquals(2, res.getObjects().size());
+        assertTrue(resultContains("gamma", res));
+        assertTrue(resultContains("delta", res));
+        assertTrue(resultContains(1.0, "SEARCH_SCORE", res));
+    }
+
     private ObjectList doQuery(String queryString) {
         log.debug("\nExecuting query: " + queryString);
         ObjectList res = fDiscSvc.query(fRepositoryId, queryString, false, false,
@@ -857,6 +869,16 @@ public class EvalQueryTest extends Abstr
         return false;
     }
 
+    private static boolean resultContains(Double val, String propId, ObjectList results) {
+        for (ObjectData od : results.getObjects()) {
+            BigDecimal bd = (BigDecimal) od.getProperties().getProperties().get(propId).getFirstValue();
+            if (val.equals(bd.doubleValue())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private static boolean resultContains(String name, ObjectList results) {
         return resultContains(name, PropertyIds.NAME, results);
     }