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 2013/02/10 19:30:19 UTC
svn commit: r1444580 - in
/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src:
main/java/org/apache/chemistry/opencmis/query/example/
test/java/org/apache/chemistry/opencmis/query/example/
Author: jens
Date: Sun Feb 10 18:30:19 2013
New Revision: 1444580
URL: http://svn.apache.org/r1444580
Log:
Query Parser example: add support for ORDER BY
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/main/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessor.java
chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/test/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessorTest.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/main/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessor.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/main/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessor.java?rev=1444580&r1=1444579&r2=1444580&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/main/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessor.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/main/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessor.java Sun Feb 10 18:30:19 2013
@@ -27,6 +27,7 @@ import org.apache.chemistry.opencmis.ser
import org.apache.chemistry.opencmis.server.support.query.CmisSelector;
import org.apache.chemistry.opencmis.server.support.query.FunctionReference;
import org.apache.chemistry.opencmis.server.support.query.QueryObject;
+import org.apache.chemistry.opencmis.server.support.query.QueryObject.SortSpec;
import org.apache.chemistry.opencmis.server.support.query.QueryUtilStrict;
public class ExampleQueryProcessor {
@@ -56,6 +57,7 @@ public class ExampleQueryProcessor {
String whereClause = walker.getResult();
generatedResponse.append(whereClause);
+ generatedResponse.append(getOrderBy(qo));
return generatedResponse.toString();
@@ -78,14 +80,7 @@ public class ExampleQueryProcessor {
} else
result.append(", ");
- result.append(sel.getName());
- if (sel instanceof FunctionReference)
- result.append("()");
-
- if (null != sel.getAliasName()) {
- result.append(" AS ");
- result.append(sel.getAliasName());
- }
+ appendSelector(result, sel);
}
result.append(" FROM");
@@ -102,4 +97,38 @@ public class ExampleQueryProcessor {
result.append(" ");
return result.toString();
}
+
+ private void appendSelector(StringBuffer result, CmisSelector sel) {
+ result.append(sel.getName());
+ if (sel instanceof FunctionReference)
+ result.append("()");
+
+ if (null != sel.getAliasName()) {
+ result.append(" AS ");
+ result.append(sel.getAliasName());
+ }
+ }
+
+ private String getOrderBy(QueryObject qo) {
+ List<SortSpec> orderBys = qo.getOrderBys();
+ if (null == orderBys || orderBys.size() == 0)
+ return "";
+
+ StringBuffer result = new StringBuffer();
+ result.append(" ORDER BY");
+ boolean first = true;
+ for (SortSpec sp : orderBys) {
+ if (first) {
+ first = false;
+ result.append(" ");
+ } else
+ result.append(", ");
+
+ CmisSelector sel = sp.getSelector();
+ appendSelector(result, sel);
+ if (!sp.ascending)
+ result.append(" DESC");
+ }
+ return result.toString();
+ }
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/test/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessorTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/test/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessorTest.java?rev=1444580&r1=1444579&r2=1444580&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/test/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessorTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-samples/chemistry-opencmis-queryparser/src/test/java/org/apache/chemistry/opencmis/query/example/ExampleQueryProcessorTest.java Sun Feb 10 18:30:19 2013
@@ -262,4 +262,16 @@ public class ExampleQueryProcessorTest {
assertEquals(expected, response);
}
+ @Test
+ public void testOrderBy() {
+ String queryString = queryPrefix + "cmis:name = 'MyDocument' ORDER BY cmis:objectId";
+ String response = queryProcessor.parseQuery(queryString);
+ String expected = expectedPrefix + "(cmis:name = 'MyDocument') ORDER BY cmis:objectId";
+ assertEquals(expected, response);
+
+ queryString = queryPrefix + "cmis:name = 'MyDocument' ORDER BY cmis:name ASC, cmis:objectId DESC";
+ response = queryProcessor.parseQuery(queryString);
+ expected = expectedPrefix + "(cmis:name = 'MyDocument') ORDER BY cmis:name, cmis:objectId DESC";
+ assertEquals(expected, response);
+ }
}