You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fg...@apache.org on 2010/09/29 19:03:41 UTC
svn commit: r1002737 - in
/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server:
chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/
chemistry-opencmis-server-support/src/main/java/org/apache/chemistry...
Author: fguillaume
Date: Wed Sep 29 17:03:41 2010
New Revision: 1002737
URL: http://svn.apache.org/viewvc?rev=1002737&view=rev
Log:
Rename ClauseWalker to PredicateWalker
Added:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java (contents, props changed)
- copied, changed from r1002590, incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractClauseWalker.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java (contents, props changed)
- copied, changed from r1002590, incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/ClauseWalker.java
Removed:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractClauseWalker.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/ClauseWalker.java
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java?rev=1002737&r1=1002736&r2=1002737&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/query/InMemoryQueryProcessor.java Wed Sep 29 17:03:41 2010
@@ -55,7 +55,7 @@ import org.apache.chemistry.opencmis.inm
import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
import org.apache.chemistry.opencmis.server.support.TypeManager;
import org.apache.chemistry.opencmis.server.support.query.AbstractQueryConditionProcessor;
-import org.apache.chemistry.opencmis.server.support.query.AbstractClauseWalker;
+import org.apache.chemistry.opencmis.server.support.query.AbstractPredicateWalker;
import org.apache.chemistry.opencmis.server.support.query.CalendarHelper;
import org.apache.chemistry.opencmis.server.support.query.CmisQueryWalker;
import org.apache.chemistry.opencmis.server.support.query.CmisSelector;
@@ -269,10 +269,10 @@ public class InMemoryQueryProcessor {
* @return true if it matches, false if it not matches
*/
boolean evalWhereNode(StoredObject so, Tree node) {
- return new InMemoryWhereClauseWalker(so).walkClause(node);
+ return new InMemoryWhereClauseWalker(so).walkPredicate(node);
}
- public class InMemoryWhereClauseWalker extends AbstractClauseWalker {
+ public class InMemoryWhereClauseWalker extends AbstractPredicateWalker {
protected StoredObject so;
@@ -282,21 +282,21 @@ public class InMemoryQueryProcessor {
@Override
public boolean walkNot(Tree opNode, Tree node) {
- boolean matches = walkClause(node);
+ boolean matches = walkPredicate(node);
return !matches;
}
@Override
public boolean walkAnd(Tree opNode, Tree leftNode, Tree rightNode) {
- boolean matches1 = walkClause(leftNode);
- boolean matches2 = walkClause(rightNode);
+ boolean matches1 = walkPredicate(leftNode);
+ boolean matches2 = walkPredicate(rightNode);
return matches1 && matches2;
}
@Override
public boolean walkOr(Tree opNode, Tree leftNode, Tree rightNode) {
- boolean matches1 = walkClause(leftNode);
- boolean matches2 = walkClause(rightNode);
+ boolean matches1 = walkPredicate(leftNode);
+ boolean matches2 = walkPredicate(rightNode);
return matches1 || matches2;
}
@@ -432,7 +432,7 @@ public class InMemoryQueryProcessor {
TypeDefinition td = colRef.getTypeDefinition();
PropertyDefinition<?> pd = td.getPropertyDefinitions().get(colRef.getPropertyId());
PropertyData<?> lVal = so.getProperties().get(colRef.getPropertyId());
- Object literal = walkValue(literalNode);
+ Object literal = walkExpr(literalNode);
if (pd.getCardinality() != Cardinality.MULTI)
throw new RuntimeException("Operator = ANY only is allowed on multi-value properties ");
else if (lVal == null)
@@ -460,7 +460,7 @@ public class InMemoryQueryProcessor {
@Override
public boolean walkLike(Tree opNode, Tree colNode, Tree stringNode) {
- Object rVal = walkValue(stringNode);
+ Object rVal = walkExpr(stringNode);
if (!(rVal instanceof String))
throw new RuntimeException("LIKE operator requires String literal on right hand side.");
@@ -488,18 +488,18 @@ public class InMemoryQueryProcessor {
}
@Override
- public boolean walkContains(Tree opNode, Tree colNode, Tree queryNode) {
+ public boolean walkContains(Tree qualNode, Tree colNode, Tree queryNode) {
throw new RuntimeException("Operator CONTAINS not supported in InMemory server.");
}
@Override
- public boolean walkInFolder(Tree opNode, Tree colNode, Tree paramNode) {
- if (null != colNode) {
- getTableReference(colNode);
+ public boolean walkInFolder(Tree opNode, Tree qualNode, Tree paramNode) {
+ if (null != qualNode) {
+ getTableReference(qualNode);
// just for error checking we do not evaluate this, there is
// only one from without join support
}
- Object lit = walkValue(paramNode);
+ Object lit = walkExpr(paramNode);
if (!(lit instanceof String))
throw new RuntimeException("Folder id in IN_FOLDER must be of type String");
String folderId = (String) lit;
@@ -512,14 +512,13 @@ public class InMemoryQueryProcessor {
}
@Override
- public boolean walkInTree(Tree opNode, Tree colNode, Tree paramNode) {
- if (null != colNode) {
- getTableReference(colNode);
+ public boolean walkInTree(Tree opNode, Tree qualNode, Tree paramNode) {
+ if (null != qualNode) {
+ getTableReference(qualNode);
// just for error checking we do not evaluate this, there is
- // only
- // one from without join support
+ // only one from without join support
}
- Object lit = walkValue(paramNode);
+ Object lit = walkExpr(paramNode);
if (!(lit instanceof String))
throw new RuntimeException("Folder id in IN_FOLDER must be of type String");
String folderId = (String) lit;
@@ -531,48 +530,8 @@ public class InMemoryQueryProcessor {
return false;
}
- @Override
- public Object walkBoolean(Tree node) {
- String s = node.getText();
- return Boolean.valueOf(s);
- }
-
- @Override
- public Object walkNumber(Tree node) {
- String s = node.getText();
- if (s.contains(".") || s.contains("e") || s.contains("E")) {
- return Double.valueOf(s);
- } else {
- return Long.valueOf(s);
- }
- }
-
- @Override
- public Object walkString(Tree node) {
- String s = node.getText();
- s = s.substring(1, s.length() - 1);
- s = s.replace("''", "'"); // unescape quotes
- return s;
- }
-
- @Override
- public Object walkTimestamp(Tree node) {
- String s = node.getText();
- s = s.substring(s.indexOf('\'') + 1, s.length() - 1);
- return CalendarHelper.fromString(s);
- }
-
- @Override
- public Object walkInList(Tree node) {
- List<Object> res = new ArrayList<Object>(node.getChildCount());
- for (int i = 0; i < node.getChildCount(); i++) {
- res.add(walkValue(node.getChild(i)));
- }
- return res;
- }
-
protected Integer compareTo(Tree leftChild, Tree rightChild) {
- Object rVal = walkValue(rightChild);
+ Object rVal = walkExpr(rightChild);
// log.debug("retrieve node from where: " +
// System.identityHashCode(leftChild) + " is " + leftChild);
@@ -588,7 +547,7 @@ public class InMemoryQueryProcessor {
@SuppressWarnings("unchecked")
public List<Object> onLiteralList(Tree node) {
- return (List<Object>) walkValue(node);
+ return (List<Object>) walkExpr(node);
}
}
Copied: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java (from r1002590, incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractClauseWalker.java)
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java?p2=incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java&p1=incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractClauseWalker.java&r1=1002590&r2=1002737&rev=1002737&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractClauseWalker.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java Wed Sep 29 17:03:41 2010
@@ -21,17 +21,20 @@
*/
package org.apache.chemistry.opencmis.server.support.query;
+import java.util.ArrayList;
+import java.util.List;
+
import org.antlr.runtime.tree.Tree;
import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
/**
- * Basic implementation walking a WHERE clause in lexical order.
+ * Basic implementation walking a predicate in lexical order.
* <p>
* The {@code walkXYZ} methods can be overridden to change the walking order.
*/
-public abstract class AbstractClauseWalker implements ClauseWalker {
+public abstract class AbstractPredicateWalker implements PredicateWalker {
- public boolean walkClause(Tree node) {
+ public boolean walkPredicate(Tree node) {
switch (node.getType()) {
case CmisQlStrictLexer.NOT:
return walkNot(node, node.getChild(0));
@@ -88,33 +91,33 @@ public abstract class AbstractClauseWalk
return walkInTree(node, node.getChild(0), node.getChild(1));
}
default:
- return walkOtherClause(node);
+ return walkOtherPredicate(node);
}
}
/** For extensibility. */
- protected boolean walkOtherClause(Tree node) {
+ protected boolean walkOtherPredicate(Tree node) {
throw new CmisRuntimeException("Unknown node type: " + node.getType() + " (" + node.getText() + ")");
}
public boolean walkNot(Tree opNode, Tree node) {
- walkClause(node);
+ walkPredicate(node);
return false;
}
public boolean walkAnd(Tree opNode, Tree leftNode, Tree rightNode) {
- walkClause(leftNode);
- walkClause(rightNode);
+ walkPredicate(leftNode);
+ walkPredicate(rightNode);
return false;
}
public boolean walkOr(Tree opNode, Tree leftNode, Tree rightNode) {
- walkClause(leftNode);
- walkClause(rightNode);
+ walkPredicate(leftNode);
+ walkPredicate(rightNode);
return false;
}
- public Object walkValue(Tree node) {
+ public Object walkExpr(Tree node) {
switch (node.getType()) {
case CmisQlStrictLexer.BOOL_LIT:
return walkBoolean(node);
@@ -125,143 +128,162 @@ public abstract class AbstractClauseWalk
case CmisQlStrictLexer.TIME_LIT:
return walkTimestamp(node);
case CmisQlStrictLexer.IN_LIST:
- return walkInList(node);
+ return walkList(node);
case CmisQlStrictLexer.COL:
return walkCol(node);
default:
- return walkOtherValue(node);
+ return walkOtherExpr(node);
}
}
/** For extensibility. */
- protected Object walkOtherValue(Tree node) {
+ protected Object walkOtherExpr(Tree node) {
throw new CmisRuntimeException("Unknown node type: " + node.getType() + " (" + node.getText() + ")");
}
public boolean walkEquals(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkNotEquals(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkGreaterThan(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkGreaterOrEquals(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkLessThan(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkLessOrEquals(Tree opNode, Tree leftNode, Tree rightNode) {
- walkValue(leftNode);
- walkValue(rightNode);
+ walkExpr(leftNode);
+ walkExpr(rightNode);
return false;
}
public boolean walkIn(Tree opNode, Tree colNode, Tree listNode) {
- walkValue(colNode);
- walkValue(listNode);
+ walkExpr(colNode);
+ walkExpr(listNode);
return false;
}
public boolean walkNotIn(Tree opNode, Tree colNode, Tree listNode) {
- walkValue(colNode);
- walkValue(listNode);
+ walkExpr(colNode);
+ walkExpr(listNode);
return false;
}
public boolean walkInAny(Tree opNode, Tree colNode, Tree listNode) {
- walkValue(colNode);
- walkValue(listNode);
+ walkExpr(colNode);
+ walkExpr(listNode);
return false;
}
public boolean walkNotInAny(Tree opNode, Tree colNode, Tree listNode) {
- walkValue(colNode);
- walkValue(listNode);
+ walkExpr(colNode);
+ walkExpr(listNode);
return false;
}
public boolean walkEqAny(Tree opNode, Tree literalNode, Tree colNode) {
- walkValue(literalNode);
- walkValue(colNode);
+ walkExpr(literalNode);
+ walkExpr(colNode);
return false;
}
public boolean walkIsNull(Tree opNode, Tree colNode) {
- walkValue(colNode);
+ walkExpr(colNode);
return false;
}
public boolean walkIsNotNull(Tree opNode, Tree colNode) {
- walkValue(colNode);
+ walkExpr(colNode);
return false;
}
public boolean walkLike(Tree opNode, Tree colNode, Tree stringNode) {
- walkValue(colNode);
- walkValue(stringNode);
+ walkExpr(colNode);
+ walkExpr(stringNode);
return false;
}
public boolean walkNotLike(Tree opNode, Tree colNode, Tree stringNode) {
- walkValue(colNode);
- walkValue(stringNode);
+ walkExpr(colNode);
+ walkExpr(stringNode);
return false;
}
- public boolean walkContains(Tree opNode, Tree colNode, Tree queryNode) {
- walkValue(colNode);
- walkValue(queryNode);
+ public boolean walkContains(Tree opNode, Tree qualNode, Tree queryNode) {
+ if (qualNode != null)
+ walkExpr(qualNode);
+ walkExpr(queryNode);
return false;
}
- public boolean walkInFolder(Tree opNode, Tree colNode, Tree paramNode) {
- walkValue(colNode);
- walkValue(paramNode);
+ public boolean walkInFolder(Tree opNode, Tree qualNode, Tree paramNode) {
+ if (qualNode != null)
+ walkExpr(qualNode);
+ walkExpr(paramNode);
return false;
}
- public boolean walkInTree(Tree opNode, Tree colNode, Tree paramNode) {
- walkValue(colNode);
- walkValue(paramNode);
+ public boolean walkInTree(Tree opNode, Tree qualNode, Tree paramNode) {
+ if (qualNode != null)
+ walkExpr(qualNode);
+ walkExpr(paramNode);
return false;
}
+ public Object walkList(Tree node) {
+ int n = node.getChildCount();
+ List<Object> res = new ArrayList<Object>(n);
+ for (int i = 0; i < n; i++) {
+ res.add(walkExpr(node.getChild(i)));
+ }
+ return res;
+ }
+
public Object walkBoolean(Tree node) {
- return null;
+ String s = node.getText();
+ return Boolean.valueOf(s);
}
public Object walkNumber(Tree node) {
- return null;
+ String s = node.getText();
+ if (s.contains(".") || s.contains("e") || s.contains("E")) {
+ return Double.valueOf(s);
+ } else {
+ return Long.valueOf(s);
+ }
}
public Object walkString(Tree node) {
- return null;
+ String s = node.getText();
+ s = s.substring(1, s.length() - 1);
+ s = s.replace("''", "'"); // unescape quotes
+ return s;
}
public Object walkTimestamp(Tree node) {
- return null;
- }
-
- public Object walkInList(Tree node) {
- return null;
+ String s = node.getText();
+ s = s.substring(s.indexOf('\'') + 1, s.length() - 1);
+ return CalendarHelper.fromString(s);
}
public Object walkCol(Tree node) {
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/AbstractPredicateWalker.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java (from r1002590, incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/ClauseWalker.java)
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java?p2=incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java&p1=incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/ClauseWalker.java&r1=1002590&r2=1002737&rev=1002737&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/ClauseWalker.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java Wed Sep 29 17:03:41 2010
@@ -31,9 +31,9 @@ import org.antlr.runtime.tree.Tree;
* <p>
* The method {@link walkClause} is the entry point.
*/
-public interface ClauseWalker {
+public interface PredicateWalker {
- boolean walkClause(Tree node);
+ boolean walkPredicate(Tree node);
boolean walkNot(Tree opNode, Tree leftNode);
@@ -41,7 +41,7 @@ public interface ClauseWalker {
boolean walkOr(Tree opNode, Tree leftNode, Tree rightNode);
- Object walkValue(Tree node);
+ Object walkExpr(Tree node);
boolean walkEquals(Tree eqNode, Tree leftNode, Tree rightNode);
@@ -73,11 +73,13 @@ public interface ClauseWalker {
boolean walkNotLike(Tree node, Tree colNode, Tree stringNode);
- boolean walkContains(Tree node, Tree colNode, Tree paramNode);
+ boolean walkContains(Tree node, Tree qualNode, Tree paramNode);
- boolean walkInFolder(Tree node, Tree colNode, Tree paramNode);
+ boolean walkInFolder(Tree node, Tree qualNode, Tree paramNode);
- boolean walkInTree(Tree node, Tree colNode, Tree paramNode);
+ boolean walkInTree(Tree node, Tree qualNode, Tree paramNode);
+
+ Object walkList(Tree node);
Object walkBoolean(Tree node);
@@ -87,8 +89,6 @@ public interface ClauseWalker {
Object walkTimestamp(Tree node);
- Object walkInList(Tree node);
-
Object walkCol(Tree node);
}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-support/src/main/java/org/apache/chemistry/opencmis/server/support/query/PredicateWalker.java
------------------------------------------------------------------------------
svn:mime-type = text/plain