diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml
index 77d97fe631..bf95720ed0 100644
--- a/config/alfresco/core-services-context.xml
+++ b/config/alfresco/core-services-context.xml
@@ -540,6 +540,9 @@
+
+
+
diff --git a/config/alfresco/hibernate-context.xml b/config/alfresco/hibernate-context.xml
index 588a1bac54..5a7daf70d1 100644
--- a/config/alfresco/hibernate-context.xml
+++ b/config/alfresco/hibernate-context.xml
@@ -408,4 +408,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java
index 74e5e2a37e..232805ca43 100644
--- a/source/java/org/alfresco/cmis/search/QueryTest.java
+++ b/source/java/org/alfresco/cmis/search/QueryTest.java
@@ -37,17 +37,36 @@ import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.cmis.dictionary.CMISTypeId;
import org.alfresco.repo.search.impl.parsers.CMISLexer;
import org.alfresco.repo.search.impl.parsers.CMISParser;
+import org.alfresco.repo.search.impl.parsers.FTSLexer;
+import org.alfresco.repo.search.impl.parsers.FTSParser;
import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Constraint;
import org.alfresco.repo.search.impl.querymodel.Function;
import org.alfresco.repo.search.impl.querymodel.JoinType;
+import org.alfresco.repo.search.impl.querymodel.Order;
+import org.alfresco.repo.search.impl.querymodel.Ordering;
+import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
import org.alfresco.repo.search.impl.querymodel.Selector;
import org.alfresco.repo.search.impl.querymodel.Source;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Equals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.In;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Like;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Lower;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.NotEquals;
import org.alfresco.repo.search.impl.querymodel.impl.functions.PropertyAccessor;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Score;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Upper;
@@ -67,7 +86,7 @@ public class QueryTest extends BaseCMISTest
{
public void testParse()
{
- String input = "SELECT UPPER(1.0) AS WOOF FROM DOCUMENT_OBJECT_TYPE AS DOC LEFT OUTER JOIN FOLDER_OBJECT_TYPE AS FOLDER ON (DOC.NAME = FOLDER.NAME)";
+ String input = "SELECT UPPER(1.0) AS WOOF FROM DOCUMENT_OBJECT_TYPE AS DOC LEFT OUTER JOIN FOLDER_OBJECT_TYPE AS FOLDER ON (DOC.NAME = FOLDER.NAME) WHERE CONTAINS('DOC.NAME:lemur AND woof') AND (DOC.NAME in ('one', 'two') AND IN_FOLDER('meep') AND DOC.NAME like 'woof' and DOC.NAME = 'woof' and DOC.OBJECT_ID = 'meep') ORDER BY DOC.NAME DESC, WOOF";
CMISParser parser = null;
try
{
@@ -81,13 +100,27 @@ public class QueryTest extends BaseCMISTest
QueryModelFactory factory = new LuceneQueryModelFactory();
CommonTree sourceNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.SOURCE);
- Source s = buildSource(sourceNode, true, factory);
- Map selectors = s.getSelectors();
+ Source source = buildSource(sourceNode, true, factory);
+ Map selectors = source.getSelectors();
ArrayList columns = buildColumns(queryNode, factory, selectors);
- System.out.println(s);
+ ArrayList orderings = buildOrderings(queryNode, factory, selectors, columns);
+
+ Constraint constraint = null;
+ CommonTree orNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.DISJUNCTION);
+ if (orNode != null)
+ {
+ constraint = buildDisjunction(orNode, factory, selectors, columns);
+ }
+
+ System.out.println(source);
System.out.println(selectors);
System.out.println(columns);
+ System.out.println(orderings);
+ System.out.println(constraint);
+
+ Query query = factory.createQuery(columns, source, constraint, orderings);
+ System.out.println(query);
}
catch (RecognitionException e)
{
@@ -102,6 +135,506 @@ public class QueryTest extends BaseCMISTest
}
+ /**
+ * @param queryNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(orNode.getChildCount());
+ for (int i = 0; i < orNode.getChildCount(); i++)
+ {
+ CommonTree andNode = (CommonTree) orNode.getChild(i);
+ Constraint constraint = buildConjunction(andNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createDisjunction(constraints);
+ }
+ }
+
+ /**
+ * @param andNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(andNode.getChildCount());
+ for (int i = 0; i < andNode.getChildCount(); i++)
+ {
+ CommonTree notNode = (CommonTree) andNode.getChild(i);
+ Constraint constraint = buildNegation(notNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createConjunction(constraints);
+ }
+ }
+
+ /**
+ * @param notNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (notNode.getType() == CMISParser.NEGATION)
+ {
+ Constraint constraint = buildTest(notNode, factory, selectors, columns);
+ return factory.createNegation(constraint);
+ }
+ else
+ {
+ return buildTest(notNode, factory, selectors, columns);
+ }
+ }
+
+ /**
+ * @param notNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (testNode.getType() == CMISParser.DISJUNCTION)
+ {
+ return buildDisjunction(testNode, factory, selectors, columns);
+ }
+ else
+ {
+ return buildPredicate(testNode, factory, selectors, columns);
+ }
+ }
+
+ /**
+ * @param orNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildPredicate(CommonTree predicateNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ String functionName;
+ Function function;
+ CommonTree argNode;
+ List functionArguments;
+ Argument arg;
+ switch (predicateNode.getType())
+ {
+ case CMISParser.PRED_CHILD:
+ functionName = Child.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
+ functionArguments.add(arg);
+ if (predicateNode.getChildCount() > 1)
+ {
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_COMPARISON:
+ switch (predicateNode.getChild(2).getType())
+ {
+ case CMISParser.EQUALS:
+ functionName = Equals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.NOTEQUALS:
+ functionName = NotEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.GREATERTHAN:
+ functionName = GreaterThan.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.GREATERTHANOREQUALS:
+ functionName = GreaterThanOrEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.LESSTHAN:
+ functionName = LessThan.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.LESSTHANOREQUALS:
+ functionName = LessThanOrEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ default:
+ throw new CMISQueryException("Unknown comparison function " + predicateNode.getChild(2).getText());
+ }
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_LHS), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(3);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_RHS), factory, selectors);
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_DESCENDANT:
+ functionName = Descendant.NAME;
+ function = factory.getFunction(functionName);
+ argNode = (CommonTree) predicateNode.getChild(0);
+ functionArguments = new ArrayList();
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
+ functionArguments.add(arg);
+ if (predicateNode.getChildCount() > 1)
+ {
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_EXISTS:
+ functionName = Exists.NAME;
+ function = factory.getFunction(functionName);
+ argNode = (CommonTree) predicateNode.getChild(0);
+ functionArguments = new ArrayList();
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Exists.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(Exists.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() == 1));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_FTS:
+ String ftsExpression = predicateNode.getChild(0).getText();
+ return buildFTS(ftsExpression, factory, selectors, columns);
+ case CMISParser.PRED_IN:
+ functionName = In.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_COLLECTION), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(In.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_LIKE:
+ functionName = Like.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_EXP), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(Like.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ default:
+ return null;
+ }
+ }
+
+ private Constraint buildFTS(String ftsExpression, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ // TODO: transform '' to ' to reverse encoding
+ FTSParser parser = null;
+ try
+ {
+ CharStream cs = new ANTLRStringStream(ftsExpression);
+ FTSLexer lexer = new FTSLexer(cs);
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ parser = new FTSParser(tokens);
+ CommonTree ftsNode = (CommonTree) parser.fts().getTree();
+ if (ftsNode.getType() == FTSParser.CONJUNCTION)
+ {
+ return buildFTSConjunction(ftsNode, factory, selectors, columns);
+ }
+ else
+ {
+ return buildFTSDisjunction(ftsNode, factory, selectors, columns);
+ }
+ }
+ catch (RecognitionException e)
+ {
+ if (parser != null)
+ {
+ String[] tokenNames = parser.getTokenNames();
+ String hdr = parser.getErrorHeader(e);
+ String msg = parser.getErrorMessage(e, tokenNames);
+ throw new CMISQueryException(hdr + "\n" + msg, e);
+ }
+ return null;
+ }
+
+ }
+
+ private Constraint buildFTSDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(orNode.getChildCount());
+ for (int i = 0; i < orNode.getChildCount(); i++)
+ {
+ CommonTree andNode = (CommonTree) orNode.getChild(i);
+ Constraint constraint = buildFTSConjunction(andNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createDisjunction(constraints);
+ }
+ }
+
+ private Constraint buildFTSConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(andNode.getChildCount());
+ for (int i = 0; i < andNode.getChildCount(); i++)
+ {
+ CommonTree notNode = (CommonTree) andNode.getChild(i);
+ Constraint constraint = buildFTSNegation(notNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createConjunction(constraints);
+ }
+ }
+
+ private Constraint buildFTSNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (notNode.getType() == FTSParser.NEGATION)
+ {
+ Constraint constraint = buildFTSTest(notNode, factory, selectors, columns);
+ return factory.createNegation(constraint);
+ }
+ else
+ {
+ return buildFTSTest(notNode, factory, selectors, columns);
+ }
+ }
+
+ private Constraint buildFTSTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ String term;
+ String phrase;
+ String functionName;
+ Function function;
+ List functionArguments;
+ Argument arg;
+ switch (testNode.getType())
+ {
+ case FTSParser.DISJUNCTION:
+ return buildFTSDisjunction(testNode, factory, selectors, columns);
+ case FTSParser.CONJUNCTION:
+ return buildFTSConjunction(testNode, factory, selectors, columns);
+ case FTSParser.TERM:
+ functionName = FTSTerm.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if(testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSTerm.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.EXACT_TERM:
+ functionName = FTSExactTerm.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSExactTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if(testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSExactTerm.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.PHRASE:
+ // TODO: transform "" to " to reverse escaping
+ functionName = FTSPhrase.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSPhrase.ARG_PHRASE, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if(testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSPhrase.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.SYNONYM:
+ case FTSParser.FG_PROXIMITY:
+ case FTSParser.FG_RANGE:
+ case FTSParser.FIELD_GROUP:
+ case FTSParser.FIELD_CONJUNCTION:
+ case FTSParser.FIELD_DISJUNCTION:
+ default:
+ throw new CMISQueryException("Unsupported FTS option "+testNode.getText());
+ }
+ }
+
+ /**
+ * @param queryNode
+ * @param factory
+ * @param selectors
+ * @return
+ */
+ private ArrayList buildOrderings(CommonTree queryNode, QueryModelFactory factory, Map selectors, List columns)
+ {
+ ArrayList orderings = new ArrayList();
+ CommonTree orderNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ORDER);
+ if (orderNode != null)
+ {
+ for (int i = 0; i < orderNode.getChildCount(); i++)
+ {
+ CommonTree current = (CommonTree) orderNode.getChild(i);
+
+ CommonTree columnRefNode = (CommonTree) current.getFirstChildWithType(CMISParser.COLUMN_REF);
+ if (columnRefNode != null)
+ {
+ String columnName = columnRefNode.getChild(0).getText();
+ String qualifier = "";
+ if (columnRefNode.getChildCount() > 1)
+ {
+ qualifier = columnRefNode.getChild(1).getText();
+ }
+
+ Order order = Order.ASCENDING;
+
+ if (current.getChild(1).getType() == CMISParser.DESC)
+ {
+ order = Order.DESCENDING;
+ }
+
+ Column orderColumn = null;
+
+ if (qualifier.length() == 0)
+ {
+ Column match = null;
+ for (Column column : columns)
+ {
+ if (column.getAlias().equals(columnName))
+ {
+ match = column;
+ break;
+ }
+ }
+ if (match == null)
+ {
+
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier);
+ }
+ QName cmisType = CMISMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
+ {
+ typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
+ {
+ typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
+
+ if (definition == null)
+ {
+ throw new CMISQueryException("Invalid column for " + CMISMapping.getQueryName(namespaceService, typeId.getQName()) + "." + columnName);
+ }
+
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+
+ String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
+
+ match = factory.createColumn(function, functionArguments, alias);
+ }
+ orderColumn = match;
+ }
+ else
+ {
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier);
+ }
+ QName cmisType = CMISMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
+ {
+ typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
+ {
+ typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
+
+ if (definition == null)
+ {
+ throw new CMISQueryException("Invalid column for "
+ + CMISMapping.getQueryName(namespaceService, typeId.getQName()) + "." + columnName + " selector alias " + selector.getAlias());
+ }
+
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+
+ String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
+
+ orderColumn = factory.createColumn(function, functionArguments, alias);
+ }
+
+ // TODO: check orderable - add to the column definition
+
+ Ordering ordering = factory.createOrdering(orderColumn, order);
+ orderings.add(ordering);
+
+ }
+ }
+ }
+ return orderings;
+ }
+
private ArrayList buildColumns(CommonTree queryNode, QueryModelFactory factory, Map selectors)
{
ArrayList columns = new ArrayList();
@@ -252,78 +785,15 @@ public class QueryTest extends BaseCMISTest
if (functionNode.getChildCount() > childIndex)
{
CommonTree argNode = (CommonTree) functionNode.getChild(childIndex++);
- if (argNode.getType() == CMISParser.COLUMN_REF)
- {
- Argument arg = buildColumnReference(definition.getName(), argNode, factory);
- functionArguments.add(arg);
- }
- else if (argNode.getType() == CMISParser.ID)
- {
- Argument arg;
- String id = argNode.getText();
- if(selectors.containsKey(id))
- {
- arg = factory.createSelectorArgument(definition.getName(), id);
- }
- else
- {
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), id);
- arg = factory.createPropertyArgument(definition.getName(), "", propertyQName);
- }
- functionArguments.add(arg);
- }
- else if(argNode.getType() == CMISParser.PARAMETER)
- {
- Argument arg = factory.createParameterArgument(definition.getName(), argNode.getText());
- functionArguments.add(arg);
- }
- else if(argNode.getType() == CMISParser.NUMERIC_LITERAL)
- {
- CommonTree literalNode = (CommonTree) argNode.getChild(0);
- if(literalNode.getType() == CMISParser.FLOATING_POINT_LITERAL)
- {
- QName type = DataTypeDefinition.DOUBLE;
- Number value = Double.parseDouble(literalNode.getText());
- if(value.floatValue() == value.doubleValue())
- {
- type = DataTypeDefinition.FLOAT;
- value = Float.valueOf(value.floatValue());
- }
- Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
- functionArguments.add(arg);
- }
- else if(literalNode.getType() == CMISParser.DECIMAL_INTEGER_LITERAL)
- {
- QName type = DataTypeDefinition.LONG;
- Number value = Long.parseLong(literalNode.getText());
- if(value.intValue() == value.longValue())
- {
- type = DataTypeDefinition.INT;
- value = Integer.valueOf(value.intValue());
- }
- Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
- functionArguments.add(arg);
- }
- else
- {
- throw new CMISQueryException("Invalid numeric literal "+literalNode.getText());
- }
- }
- else if(argNode.getType() == CMISParser.STRING_LITERAL)
- {
- Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getChild(0).getText());
- functionArguments.add(arg);
- }
- else
- {
- throw new CMISQueryException("Invalid query argument "+argNode.getText());
- }
+ Argument arg = getFunctionArgument(argNode, definition, factory, selectors);
+ functionArguments.add(arg);
}
else
{
if (definition.isMandatory())
{
- //throw new CMISQueryException("Insufficient aruments for function " + ((CommonTree) functionNode.getChild(0)).getText() );
+ // throw new CMISQueryException("Insufficient aruments for function " + ((CommonTree)
+ // functionNode.getChild(0)).getText() );
break;
}
else
@@ -332,23 +802,114 @@ public class QueryTest extends BaseCMISTest
}
}
}
-
+
String alias = function.getName();
if (columnNode.getChildCount() > 1)
{
alias = columnNode.getChild(1).getText();
}
-
+
Column column = factory.createColumn(function, functionArguments, alias);
columns.add(column);
}
-
+
}
}
return columns;
}
+ private Argument getFunctionArgument(CommonTree argNode, ArgumentDefinition definition, QueryModelFactory factory, Map selectors)
+ {
+ if (argNode.getType() == CMISParser.COLUMN_REF)
+ {
+ Argument arg = buildColumnReference(definition.getName(), argNode, factory);
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.ID)
+ {
+ Argument arg;
+ String id = argNode.getText();
+ if (selectors.containsKey(id))
+ {
+ arg = factory.createSelectorArgument(definition.getName(), id);
+ }
+ else
+ {
+ QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), id);
+ arg = factory.createPropertyArgument(definition.getName(), "", propertyQName);
+ }
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.PARAMETER)
+ {
+ Argument arg = factory.createParameterArgument(definition.getName(), argNode.getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.NUMERIC_LITERAL)
+ {
+ CommonTree literalNode = (CommonTree) argNode.getChild(0);
+ if (literalNode.getType() == CMISParser.FLOATING_POINT_LITERAL)
+ {
+ QName type = DataTypeDefinition.DOUBLE;
+ Number value = Double.parseDouble(literalNode.getText());
+ if (value.floatValue() == value.doubleValue())
+ {
+ type = DataTypeDefinition.FLOAT;
+ value = Float.valueOf(value.floatValue());
+ }
+ Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
+ return arg;
+ }
+ else if (literalNode.getType() == CMISParser.DECIMAL_INTEGER_LITERAL)
+ {
+ QName type = DataTypeDefinition.LONG;
+ Number value = Long.parseLong(literalNode.getText());
+ if (value.intValue() == value.longValue())
+ {
+ type = DataTypeDefinition.INT;
+ value = Integer.valueOf(value.intValue());
+ }
+ Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
+ return arg;
+ }
+ else
+ {
+ throw new CMISQueryException("Invalid numeric literal " + literalNode.getText());
+ }
+ }
+ else if (argNode.getType() == CMISParser.STRING_LITERAL)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getChild(0).getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.LIST)
+ {
+ ArrayList arguments = new ArrayList();
+ for (int i = 0; i < argNode.getChildCount(); i++)
+ {
+ CommonTree arg = (CommonTree) argNode.getChild(i);
+ arguments.add(getFunctionArgument(arg, definition, factory, selectors));
+ }
+ Argument arg = factory.createListArgument(definition.getName(), arguments);
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.ANY)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.NOT)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
+ return arg;
+ }
+ else
+ {
+ throw new CMISQueryException("Invalid query argument " + argNode.getText());
+ }
+ }
+
@SuppressWarnings("unchecked")
private Source buildSource(CommonTree source, boolean supportJoins, QueryModelFactory factory)
{
diff --git a/source/java/org/alfresco/repo/domain/hibernate/BulkLoader.java b/source/java/org/alfresco/repo/domain/hibernate/BulkLoader.java
new file mode 100644
index 0000000000..019cc5fda1
--- /dev/null
+++ b/source/java/org/alfresco/repo/domain/hibernate/BulkLoader.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.hibernate;
+
+import java.util.Collection;
+
+import org.alfresco.service.cmr.repository.NodeRef;
+
+/**
+ * @author andyh
+ *
+ */
+public interface BulkLoader
+{
+ public void loadIntoCache(Collection nodeRefs);
+}
diff --git a/source/java/org/alfresco/repo/domain/hibernate/HibernateL1CacheBulkLoader.java b/source/java/org/alfresco/repo/domain/hibernate/HibernateL1CacheBulkLoader.java
new file mode 100644
index 0000000000..1d19bb660a
--- /dev/null
+++ b/source/java/org/alfresco/repo/domain/hibernate/HibernateL1CacheBulkLoader.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.domain.hibernate;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.alfresco.repo.domain.Node;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.hibernate.CacheMode;
+import org.hibernate.Criteria;
+import org.hibernate.EntityMode;
+import org.hibernate.FetchMode;
+import org.hibernate.FlushMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Property;
+import org.hibernate.criterion.Restrictions;
+import org.hibernate.engine.EntityKey;
+import org.hibernate.metadata.ClassMetadata;
+import org.hibernate.metadata.CollectionMetadata;
+import org.hibernate.stat.SessionStatistics;
+import org.hibernate.stat.Statistics;
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
+
+/**
+ * @author andyh
+ */
+public class HibernateL1CacheBulkLoader extends HibernateDaoSupport implements BulkLoader
+{
+ public void loadIntoCache(Collection nodeRefs)
+ {
+ // TODO: only do if dirty.
+ //getSession().flush();
+
+ String[] guids = new String[nodeRefs.size()];
+ int index = 0;
+ for (NodeRef nodeRef : nodeRefs)
+ {
+ guids[index++] = nodeRef.getId();
+ }
+
+ Criteria criteria = getSession().createCriteria(NodeStatusImpl.class, "status");
+ criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
+ criteria.add(Restrictions.in("key.guid", guids));
+ criteria.createAlias("status.node", "node");
+ criteria.setFetchMode("node.aspects", FetchMode.SELECT);
+ criteria.setFetchMode("node.properties", FetchMode.JOIN);
+ criteria.setFetchMode("node.store", FetchMode.SELECT);
+ criteria.setCacheMode(CacheMode.IGNORE);
+ criteria.setFlushMode(FlushMode.MANUAL);
+
+ criteria.list();
+
+ criteria = getSession().createCriteria(NodeStatusImpl.class, "status");
+ criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
+ criteria.add(Restrictions.in("key.guid", guids));
+ criteria.createAlias("status.node", "node");
+ criteria.setFetchMode("node.aspects", FetchMode.JOIN);
+ criteria.setFetchMode("node.properties", FetchMode.SELECT);
+ criteria.setFetchMode("node.store", FetchMode.SELECT);
+ criteria.setCacheMode(CacheMode.IGNORE);
+ criteria.setFlushMode(FlushMode.MANUAL);
+
+ criteria.list();
+
+
+ }
+
+ public void clear()
+ {
+ getSession().flush();
+ getSession().clear();
+ Map classes = getSessionFactory().getAllClassMetadata();
+ for (ClassMetadata clazz : classes.values())
+ {
+ getSessionFactory().evict(clazz.getMappedClass(EntityMode.POJO));
+ }
+ Map collections = getSessionFactory().getAllCollectionMetadata();
+ for (CollectionMetadata clazz : collections.values())
+ {
+ getSessionFactory().evictCollection(clazz.getRole());
+ }
+
+ }
+}
diff --git a/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java b/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java
index 6abd4cb315..a12b957ffa 100644
--- a/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java
+++ b/source/java/org/alfresco/repo/search/AVMSnapShotTriggeredIndexingMethodInterceptor.java
@@ -35,7 +35,6 @@ import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.search.impl.lucene.AVMLuceneIndexer;
import org.alfresco.service.cmr.avm.AVMService;
-import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.aopalliance.intercept.MethodInterceptor;
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneCategoryTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneCategoryTest.java
index 39414c4a06..b714435db6 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneCategoryTest.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneCategoryTest.java
@@ -31,8 +31,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Random;
-import javax.transaction.NotSupportedException;
-import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import junit.framework.TestCase;
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
index ee95643cc9..930cf16b5f 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
@@ -27,7 +27,6 @@ package org.alfresco.repo.search.impl.lucene;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@@ -42,11 +41,9 @@ import org.alfresco.repo.search.QueryRegisterComponent;
import org.alfresco.repo.search.SearcherException;
import org.alfresco.repo.search.impl.NodeSearcher;
import org.alfresco.repo.search.impl.lucene.QueryParser.Operator;
-import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.search.impl.lucene.analysis.DateTimeAnalyser;
-import org.alfresco.repo.search.results.SortedResultSet;
+import org.alfresco.repo.tenant.TenantService;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -69,7 +66,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.TermDocs;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.Query;
@@ -320,7 +316,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS
}
Path[] paths = searchParameters.getAttributePaths().toArray(new Path[0]);
- ResultSet rs = new LuceneResultSet(hits, searcher, nodeService, tenantService, paths, searchParameters);
+ ResultSet rs = new LuceneResultSet(hits, searcher, nodeService, tenantService, paths, searchParameters, getLuceneConfig());
if(requiresPostSort)
{
ResultSet sorted = new SortedResultSet(rs, nodeService, searchParameters, namespacePrefixResolver);
@@ -362,7 +358,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS
return new EmptyResultSet();
}
Hits hits = searcher.search(query);
- return new LuceneResultSet(hits, searcher, nodeService, tenantService, searchParameters.getAttributePaths().toArray(new Path[0]), searchParameters);
+ return new LuceneResultSet(hits, searcher, nodeService, tenantService, searchParameters.getAttributePaths().toArray(new Path[0]), searchParameters, getLuceneConfig());
}
catch (SAXPathException e)
{
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
index cc730d254e..8e7bd54ce7 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
@@ -51,6 +51,7 @@ import org.alfresco.repo.dictionary.DictionaryDAO;
import org.alfresco.repo.dictionary.DictionaryNamespaceComponent;
import org.alfresco.repo.dictionary.M2Model;
import org.alfresco.repo.dictionary.NamespaceDAOImpl;
+import org.alfresco.repo.domain.hibernate.HibernateL1CacheBulkLoader;
import org.alfresco.repo.domain.hibernate.SessionSizeResourceManager;
import org.alfresco.repo.node.BaseNodeServiceTest;
import org.alfresco.repo.search.MLAnalysisMode;
@@ -133,7 +134,7 @@ public class ADMLuceneTest extends TestCase
NodeService nodeService;
DictionaryService dictionaryService;
-
+
TenantService tenantService;
private NodeRef rootNodeRef;
@@ -198,6 +199,8 @@ public class ADMLuceneTest extends TestCase
private Date testDate;
+ private HibernateL1CacheBulkLoader hibernateL1CacheBulkLoader;
+
/**
*
*/
@@ -220,7 +223,9 @@ public class ADMLuceneTest extends TestCase
transactionService = (TransactionService) ctx.getBean("transactionComponent");
retryingTransactionHelper = (RetryingTransactionHelper) ctx.getBean("retryingTransactionHelper");
tenantService = (TenantService) ctx.getBean("tenantService");
-
+
+ hibernateL1CacheBulkLoader = (HibernateL1CacheBulkLoader) ctx.getBean("hibernateL1CacheBulkLoader");
+
serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
namespaceDao = (NamespaceDAOImpl) ctx.getBean("namespaceDAO");
@@ -469,6 +474,7 @@ public class ADMLuceneTest extends TestCase
super(arg0);
}
+
public void testOverWritetoZeroSize() throws Exception
{
testTX.commit();
@@ -512,6 +518,247 @@ public class ADMLuceneTest extends TestCase
}
+ public void testBulkResultSet1() throws Exception
+ {
+ doBulkTest(1);
+ }
+
+ public void testBulkResultSet10() throws Exception
+ {
+ doBulkTest(10);
+ }
+
+ public void testBulkResultSet100() throws Exception
+ {
+
+ doBulkTest(100);
+ }
+
+ public void testBulkResultSet1000() throws Exception
+ {
+ doBulkTest(1000);
+ }
+
+ public void xtestBulkResultSet10000() throws Exception
+ {
+ doBulkTest(10000);
+ }
+
+ private void doBulkTest(int n) throws Exception
+ {
+
+ Map testProperties = new HashMap();
+ testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic"), "BULK");
+ for (int i = 0; i < n; i++)
+ {
+ nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}texas-" + i), testSuperType, testProperties).getChildRef();
+ }
+ testTX.commit();
+ testTX = transactionService.getUserTransaction();
+ testTX.begin();
+
+ ADMLuceneSearcherImpl searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher);
+ searcher.setNodeService(nodeService);
+ searcher.setDictionaryService(dictionaryService);
+ searcher.setTenantService(tenantService);
+ searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace"));
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(false);
+ sp.setBulkFetchSize(10);
+ ResultSet results = searcher.query(sp);
+ assertEquals(n, results.length());
+ results.close();
+
+ getCold(searcher, n);
+ getWarm(searcher, n);
+ getCold(searcher, n);
+ getCold10(searcher, n);
+ getCold100(searcher, n);
+ getCold1000(searcher, n);
+ getCold10000(searcher, n);
+
+ testTX.commit();
+ testTX = transactionService.getUserTransaction();
+ testTX.begin();
+
+ }
+
+ private void getCold(ADMLuceneSearcherImpl searcher, int n)
+ {
+ hibernateL1CacheBulkLoader.clear();
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(false);
+ sp.setBulkFetchSize(0);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Cold in " + ((end - start) / 10e9));
+ }
+
+ private void getWarm(ADMLuceneSearcherImpl searcher, int n)
+ {
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(false);
+ sp.setBulkFetchSize(0);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Warm in " + ((end - start) / 10e9));
+ }
+
+ private void getCold10(ADMLuceneSearcherImpl searcher, int n)
+ {
+ hibernateL1CacheBulkLoader.clear();
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(true);
+ sp.setBulkFetchSize(10);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Prefetch 10 in " + ((end - start) / 10e9));
+ }
+
+ private void getCold100(ADMLuceneSearcherImpl searcher, int n)
+ {
+ hibernateL1CacheBulkLoader.clear();
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(true);
+ sp.setBulkFetchSize(100);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Prefetch 100 in " + ((end - start) / 10e9));
+ }
+
+ private void getCold1000(ADMLuceneSearcherImpl searcher, int n)
+ {
+ hibernateL1CacheBulkLoader.clear();
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(true);
+ sp.setBulkFetchSize(1000);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Prefetch 1000 in " + ((end - start) / 10e9));
+ }
+
+ private void getCold10000(ADMLuceneSearcherImpl searcher, int n)
+ {
+ hibernateL1CacheBulkLoader.clear();
+
+ long start;
+
+ long end;
+
+ start = System.nanoTime();
+
+ SearchParameters sp = new SearchParameters();
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setLanguage("lucene");
+ sp.setQuery("\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"BULK\"");
+ sp.setBulkFetch(true);
+ sp.setBulkFetchSize(10000);
+ ResultSet results = searcher.query(sp);
+ for (ResultSetRow row : results)
+ {
+ nodeService.getAspects(row.getNodeRef());
+ nodeService.getProperties(row.getNodeRef());
+ }
+ results.close();
+
+ end = System.nanoTime();
+
+ System.out.println(n + " Prefetch 10000 in " + ((end - start) / 10e9));
+ }
+
/**
* Test bug fix
*
@@ -4097,7 +4344,7 @@ public class ADMLuceneTest extends TestCase
results = searcher.query(sp);
assertEquals(1, results.length());
results.close();
-
+
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage("lucene");
@@ -4105,7 +4352,7 @@ public class ADMLuceneTest extends TestCase
results = searcher.query(sp);
assertEquals(1, results.length());
results.close();
-
+
sp = new SearchParameters();
sp.addStore(rootNodeRef.getStoreRef());
sp.setLanguage("lucene");
@@ -5230,7 +5477,7 @@ public class ADMLuceneTest extends TestCase
searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace"));
searcher.setDictionaryService(dictionaryService);
searcher.setTenantService(tenantService);
-
+
results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@"
+ escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"keyone\"", null, null);
assertEquals(1, results.length());
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java b/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java
index 28d600a7aa..624fad8cac 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/AbstractLuceneIndexerAndSearcherFactory.java
@@ -47,6 +47,7 @@ import javax.transaction.xa.Xid;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.avm.AVMNodeService;
+import org.alfresco.repo.domain.hibernate.BulkLoader;
import org.alfresco.repo.search.IndexerException;
import org.alfresco.repo.search.MLAnalysisMode;
import org.alfresco.repo.search.QueryRegisterComponent;
@@ -117,7 +118,7 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
private static final int DEFAULT_TIMEOUT = 600000;
protected TenantService tenantService;
-
+
private String indexRootLocation;
private QueryRegisterComponent queryRegister;
@@ -139,6 +140,8 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
private ThreadPoolExecutor threadPoolExecutor;
+ private BulkLoader bulkLoader;
+
/**
* Private constructor for the singleton TODO: FIt in with IOC
*/
@@ -168,7 +171,7 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
{
this.tenantService = tenantService;
}
-
+
/**
* Set the query register
*
@@ -211,6 +214,16 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
return maxAtomicTransformationTime;
}
+ public BulkLoader getBulkLoader()
+ {
+ return bulkLoader;
+ }
+
+ public void setBulkLoader(BulkLoader bulkLoader)
+ {
+ this.bulkLoader = bulkLoader;
+ }
+
/**
* Check if we are in a global transactoin according to the transaction manager
*
@@ -256,7 +269,7 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
public LuceneIndexer getIndexer(StoreRef storeRef) throws IndexerException
{
storeRef = tenantService.getName(storeRef);
-
+
// register to receive txn callbacks
// TODO: make this conditional on whether the XA stuff is being used
// directly on not
@@ -369,7 +382,7 @@ public abstract class AbstractLuceneIndexerAndSearcherFactory implements LuceneI
public LuceneSearcher getSearcher(StoreRef storeRef, boolean searchDelta) throws SearcherException
{
storeRef = tenantService.getName(storeRef);
-
+
String deltaId = null;
LuceneIndexer indexer = null;
if (searchDelta)
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneConfig.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneConfig.java
index 1630dede63..88b2684f81 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneConfig.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneConfig.java
@@ -26,6 +26,7 @@ package org.alfresco.repo.search.impl.lucene;
import java.util.concurrent.ThreadPoolExecutor;
+import org.alfresco.repo.domain.hibernate.BulkLoader;
import org.alfresco.repo.search.MLAnalysisMode;
public interface LuceneConfig
@@ -36,13 +37,14 @@ public interface LuceneConfig
* @param lockDirectory
*/
public void setLockDirectory(String lockDirectory);
-
+
/**
- * The path to the index location
+ * The path to the index location
+ *
* @return
*/
public String getIndexRootLocation();
-
+
/**
* The batch size in which to group flushes of the index.
*
@@ -52,35 +54,44 @@ public interface LuceneConfig
/**
* The maximum numbr of sub-queries the can be generated out of wild card expansion etc
+ *
* @return
*/
public int getQueryMaxClauses();
-
+
/**
* The default mode for analysing ML text during index.
*
* @return
*/
public MLAnalysisMode getDefaultMLIndexAnalysisMode();
-
+
/**
* The default mode for analysis of ML text during search.
*
* @return
*/
public MLAnalysisMode getDefaultMLSearchAnalysisMode();
-
+
/**
* Get the max field length that determine how many tokens are put into the index
+ *
* @return
*/
public int getIndexerMaxFieldLength();
-
+
/**
* Get the thread pool for index merging etc
*
* @return
*/
public ThreadPoolExecutor getThreadPoolExecutor();
-
+
+ /**
+ * Get preloader - may be null if preloading is not supported
+ *
+ * @return
+ */
+ public BulkLoader getBulkLoader();
+
}
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexer.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexer.java
index 6e2ca16091..ba81fde969 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexer.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexer.java
@@ -26,14 +26,9 @@ package org.alfresco.repo.search.impl.lucene;
import java.util.Set;
-import org.alfresco.repo.search.BackgroundIndexerAware;
import org.alfresco.repo.search.Indexer;
import org.alfresco.repo.search.TransactionSynchronisationAwareIndexer;
-import org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer;
import org.alfresco.repo.search.impl.lucene.index.IndexInfo;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
/**
* @author Andy Hind
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerAndSearcher.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerAndSearcher.java
index 156eacba8f..0dcd404b24 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerAndSearcher.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerAndSearcher.java
@@ -24,13 +24,8 @@
*/
package org.alfresco.repo.search.impl.lucene;
-import java.util.List;
-
import org.alfresco.repo.search.IndexerAndSearcher;
import org.alfresco.repo.search.IndexerException;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.StoreRef;
-import org.alfresco.util.Pair;
public interface LuceneIndexerAndSearcher extends IndexerAndSearcher, LuceneConfig
{
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java
index 0623692114..f28e352bbb 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java
@@ -33,12 +33,10 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
-import java.util.Vector;
import org.alfresco.i18n.I18NUtil;
import org.alfresco.repo.search.MLAnalysisMode;
@@ -71,7 +69,6 @@ import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.ConstantScoreRangeQuery;
import org.apache.lucene.search.MultiPhraseQuery;
-import org.apache.lucene.search.PhraseQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardTermEnum;
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
index dc1f79be2b..1f691759ec 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
@@ -25,6 +25,8 @@
package org.alfresco.repo.search.impl.lucene;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.BitSet;
import org.alfresco.repo.search.AbstractResultSet;
import org.alfresco.repo.search.ResultSetRowIterator;
@@ -48,7 +50,6 @@ import org.apache.lucene.search.Searcher;
* Implementation of a ResultSet on top of Lucene Hits class.
*
* @author andyh
- *
*/
public class LuceneResultSet extends AbstractResultSet
{
@@ -58,20 +59,26 @@ public class LuceneResultSet extends AbstractResultSet
Hits hits;
private Searcher searcher;
-
+
private NodeService nodeService;
private TenantService tenantService;
SearchParameters searchParameters;
+
+ private LuceneConfig config;
+
+ private BitSet prefetch;
+
/**
* Wrap a lucene seach result with node support
*
* @param storeRef
* @param hits
*/
- public LuceneResultSet(Hits hits, Searcher searcher, NodeService nodeService, TenantService tenantService, Path[]propertyPaths, SearchParameters searchParameters)
+ public LuceneResultSet(Hits hits, Searcher searcher, NodeService nodeService, TenantService tenantService, Path[] propertyPaths, SearchParameters searchParameters,
+ LuceneConfig config)
{
super(propertyPaths);
this.hits = hits;
@@ -79,6 +86,8 @@ public class LuceneResultSet extends AbstractResultSet
this.nodeService = nodeService;
this.tenantService = tenantService;
this.searchParameters = searchParameters;
+ this.config = config;
+ prefetch = new BitSet(hits.length());
}
/*
@@ -97,18 +106,11 @@ public class LuceneResultSet extends AbstractResultSet
public NodeRef getNodeRef(int n)
{
- try
- {
- // We have to get the document to resolve this
- // It is possible the store ref is also stored in the index
- Document doc = hits.doc(n);
- String id = doc.get("ID");
- return tenantService.getBaseName(new NodeRef(id));
- }
- catch (IOException e)
- {
- throw new SearcherException("IO Error reading reading node ref from the result set", e);
- }
+ // We have to get the document to resolve this
+ // It is possible the store ref is also stored in the index
+ Document doc = getDocument(n);
+ String id = doc.get("ID");
+ return tenantService.getBaseName(new NodeRef(id));
}
public float getScore(int n) throws SearcherException
@@ -128,6 +130,10 @@ public class LuceneResultSet extends AbstractResultSet
try
{
Document doc = hits.doc(n);
+ if (!prefetch.get(n))
+ {
+ fetch(n);
+ }
return doc;
}
catch (IOException e)
@@ -136,6 +142,50 @@ public class LuceneResultSet extends AbstractResultSet
}
}
+ private void fetch(int n)
+ {
+ if (searchParameters.getBulkFetch() && (config.getBulkLoader() != null))
+ {
+ while (!prefetch.get(n))
+ {
+ fetch();
+ }
+ }
+ }
+
+ private void fetch()
+ {
+ try
+ {
+ if (searchParameters.getBulkFetch() && (config.getBulkLoader() != null))
+ {
+ for (int i = 0; (i < hits.length()); i += searchParameters.getBulkFecthSize())
+ {
+ if (!prefetch.get(i))
+ {
+ ArrayList fetchList = new ArrayList(searchParameters.getBulkFecthSize());
+ for (int j = i; (j < i + searchParameters.getBulkFecthSize()) && (j < hits.length()); j++)
+ {
+ Document doc = hits.doc(j);
+ String id = doc.get("ID");
+ NodeRef nodeRef = tenantService.getBaseName(new NodeRef(id));
+ fetchList.add(nodeRef);
+ }
+ config.getBulkLoader().loadIntoCache(fetchList);
+ for (int j = i; j < i + searchParameters.getBulkFecthSize(); j++)
+ {
+ prefetch.set(j);
+ }
+ }
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new SearcherException("IO Error reading reading document from the result set", e);
+ }
+ }
+
public void close()
{
try
@@ -155,9 +205,9 @@ public class LuceneResultSet extends AbstractResultSet
public ResultSetRow getRow(int i)
{
- if(i < length())
+ if (i < length())
{
- return new LuceneResultSetRow(this, i);
+ return new LuceneResultSetRow(this, i);
}
else
{
@@ -167,10 +217,9 @@ public class LuceneResultSet extends AbstractResultSet
public ChildAssociationRef getChildAssocRef(int n)
{
- return getRow(n).getChildAssocRef();
+ return getRow(n).getChildAssocRef();
}
-
public ResultSetMetaData getResultSetMetaData()
{
return new SimpleResultSetMetaData(LimitBy.UNLIMITED, PermissionEvaluationMode.EAGER, searchParameters);
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneSearcher.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneSearcher.java
index c18dfbae8e..44369cd998 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneSearcher.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneSearcher.java
@@ -27,7 +27,6 @@ package org.alfresco.repo.search.impl.lucene;
import java.util.List;
import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.namespace.NamespacePrefixResolver;
import org.alfresco.util.Pair;
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
index 5e15e49f45..6c37f0dc04 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
@@ -334,7 +334,7 @@ literal
inPredicate
: columnReference NOT? IN LPAREN inValueList RPAREN
- -> ^(PRED_IN ANY columnReference NOT? inValueList)
+ -> ^(PRED_IN ANY columnReference inValueList NOT?)
;
inValueList
@@ -344,7 +344,7 @@ inValueList
likePredicate
: columnReference NOT? LIKE characterStringLiteral
- -> ^(PRED_LIKE columnReference NOT? characterStringLiteral)
+ -> ^(PRED_LIKE columnReference characterStringLiteral NOT?)
;
nullPredicate
@@ -360,12 +360,12 @@ quantifiedComparisonPredicate
quantifiedInPredicate
: ANY multiValuedColumnReference NOT? IN LPAREN inValueList RPAREN
- -> ^(PRED_IN ANY multiValuedColumnReference NOT? inValueList)
+ -> ^(PRED_IN ANY multiValuedColumnReference inValueList NOT?)
;
textSearchPredicate
: CONTAINS LPAREN (qualifier COMMA | COMMA)? textSearchExpression RPAREN
- -> ^(PRED_FTS textSearchExpression qualifier)
+ -> ^(PRED_FTS textSearchExpression qualifier?)
;
folderPredicate
@@ -388,10 +388,10 @@ orderByClause
;
sortSpecification
- : columnName
- -> ^(SORT_SPECIFICATION columnName ASC)
- | columnName ( by=ASC | by=DESC )
- -> ^(SORT_SPECIFICATION columnName $by)
+ : columnReference
+ -> ^(SORT_SPECIFICATION columnReference ASC)
+ | columnReference ( by=ASC | by=DESC )
+ -> ^(SORT_SPECIFICATION columnReference $by)
;
correlationName
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java
index 25441d1cef..296b78bf2e 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-08 14:37:53
+// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-15 16:24:40
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java
index 19da9c26af..c7c78e2cc3 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-08 14:37:52
+// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-15 16:24:39
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -278,7 +278,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: selectList, orderByClause, whereClause, fromClause
+ // elements: fromClause, selectList, whereClause, orderByClause
// token labels:
// rule labels: retval
// token list labels:
@@ -715,7 +715,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: columnName, valueExpression
+ // elements: valueExpression, columnName
// token labels:
// rule labels: retval
// token list labels:
@@ -1248,7 +1248,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: multiValuedColumnName, qualifier
+ // elements: qualifier, multiValuedColumnName
// token labels:
// rule labels: retval
// token list labels:
@@ -2382,7 +2382,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: joinType, joinSpecification, JOIN, tableReference
+ // elements: joinSpecification, tableReference, JOIN, joinType
// token labels:
// rule labels: retval
// token list labels:
@@ -2765,7 +2765,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: EQUALS, ON, lhs, rhs
+ // elements: rhs, EQUALS, lhs, ON
// token labels:
// rule labels: retval, rhs, lhs
// token list labels:
@@ -3607,7 +3607,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: compOp, valueExpression, literalOrParameterName
+ // elements: valueExpression, literalOrParameterName, compOp
// token labels:
// rule labels: retval
// token list labels:
@@ -3893,7 +3893,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start inPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:335:1: inPredicate : columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference ( NOT )? inValueList ) ;
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:335:1: inPredicate : columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) ;
public final CMISParser.inPredicate_return inPredicate() throws RecognitionException {
CMISParser.inPredicate_return retval = new CMISParser.inPredicate_return();
retval.start = input.LT(1);
@@ -3920,7 +3920,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_inValueList=new RewriteRuleSubtreeStream(adaptor,"rule inValueList");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:2: ( columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference ( NOT )? inValueList ) )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:2: ( columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:336:4: columnReference ( NOT )? IN LPAREN inValueList RPAREN
{
pushFollow(FOLLOW_columnReference_in_inPredicate1207);
@@ -3967,7 +3967,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: NOT, columnReference, inValueList
+ // elements: inValueList, NOT, columnReference
// token labels:
// rule labels: retval
// token list labels:
@@ -3977,22 +3977,22 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 337:3: -> ^( PRED_IN ANY columnReference ( NOT )? inValueList )
+ // 337:3: -> ^( PRED_IN ANY columnReference inValueList ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:6: ^( PRED_IN ANY columnReference ( NOT )? inValueList )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:6: ^( PRED_IN ANY columnReference inValueList ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_IN, "PRED_IN"), root_1);
adaptor.addChild(root_1, (Object)adaptor.create(ANY, "ANY"));
adaptor.addChild(root_1, stream_columnReference.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:36: ( NOT )?
+ adaptor.addChild(root_1, stream_inValueList.nextTree());
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:48: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
}
stream_NOT.reset();
- adaptor.addChild(root_1, stream_inValueList.nextTree());
adaptor.addChild(root_0, root_1);
}
@@ -4148,7 +4148,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start likePredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:345:1: likePredicate : columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference ( NOT )? characterStringLiteral ) ;
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:345:1: likePredicate : columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) ;
public final CMISParser.likePredicate_return likePredicate() throws RecognitionException {
CMISParser.likePredicate_return retval = new CMISParser.likePredicate_return();
retval.start = input.LT(1);
@@ -4169,7 +4169,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_characterStringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule characterStringLiteral");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:2: ( columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference ( NOT )? characterStringLiteral ) )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:2: ( columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:346:4: columnReference ( NOT )? LIKE characterStringLiteral
{
pushFollow(FOLLOW_columnReference_in_likePredicate1278);
@@ -4210,7 +4210,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: characterStringLiteral, columnReference, NOT
+ // elements: characterStringLiteral, NOT, columnReference
// token labels:
// rule labels: retval
// token list labels:
@@ -4220,21 +4220,21 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 347:3: -> ^( PRED_LIKE columnReference ( NOT )? characterStringLiteral )
+ // 347:3: -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:6: ^( PRED_LIKE columnReference ( NOT )? characterStringLiteral )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:6: ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_LIKE, "PRED_LIKE"), root_1);
adaptor.addChild(root_1, stream_columnReference.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:34: ( NOT )?
+ adaptor.addChild(root_1, stream_characterStringLiteral.nextTree());
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:57: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
}
stream_NOT.reset();
- adaptor.addChild(root_1, stream_characterStringLiteral.nextTree());
adaptor.addChild(root_0, root_1);
}
@@ -4448,7 +4448,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: NOT, columnReference
+ // elements: columnReference, NOT
// token labels:
// rule labels: retval
// token list labels:
@@ -4554,7 +4554,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: ANY, multiValuedColumnReference, compOp, literalOrParameterName
+ // elements: ANY, literalOrParameterName, multiValuedColumnReference, compOp
// token labels:
// rule labels: retval
// token list labels:
@@ -4609,7 +4609,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start quantifiedInPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:361:1: quantifiedInPredicate : ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference ( NOT )? inValueList ) ;
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:361:1: quantifiedInPredicate : ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) ;
public final CMISParser.quantifiedInPredicate_return quantifiedInPredicate() throws RecognitionException {
CMISParser.quantifiedInPredicate_return retval = new CMISParser.quantifiedInPredicate_return();
retval.start = input.LT(1);
@@ -4639,7 +4639,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
RewriteRuleSubtreeStream stream_inValueList=new RewriteRuleSubtreeStream(adaptor,"rule inValueList");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:2: ( ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference ( NOT )? inValueList ) )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:2: ( ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:362:4: ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN
{
ANY111=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedInPredicate1391); if (state.failed) return retval;
@@ -4689,7 +4689,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: inValueList, multiValuedColumnReference, ANY, NOT
+ // elements: inValueList, ANY, multiValuedColumnReference, NOT
// token labels:
// rule labels: retval
// token list labels:
@@ -4699,22 +4699,22 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 363:3: -> ^( PRED_IN ANY multiValuedColumnReference ( NOT )? inValueList )
+ // 363:3: -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:363:6: ^( PRED_IN ANY multiValuedColumnReference ( NOT )? inValueList )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:363:6: ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_IN, "PRED_IN"), root_1);
adaptor.addChild(root_1, stream_ANY.nextNode());
adaptor.addChild(root_1, stream_multiValuedColumnReference.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:363:47: ( NOT )?
+ adaptor.addChild(root_1, stream_inValueList.nextTree());
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:363:59: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
}
stream_NOT.reset();
- adaptor.addChild(root_1, stream_inValueList.nextTree());
adaptor.addChild(root_0, root_1);
}
@@ -4749,7 +4749,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start textSearchPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:366:1: textSearchPredicate : CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression qualifier ) ;
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:366:1: textSearchPredicate : CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) ;
public final CMISParser.textSearchPredicate_return textSearchPredicate() throws RecognitionException {
CMISParser.textSearchPredicate_return retval = new CMISParser.textSearchPredicate_return();
retval.start = input.LT(1);
@@ -4778,7 +4778,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_textSearchExpression=new RewriteRuleSubtreeStream(adaptor,"rule textSearchExpression");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:2: ( CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression qualifier ) )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:2: ( CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:367:4: CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN
{
CONTAINS118=(Token)match(input,CONTAINS,FOLLOW_CONTAINS_in_textSearchPredicate1434); if (state.failed) return retval;
@@ -4847,15 +4847,20 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 368:3: -> ^( PRED_FTS textSearchExpression qualifier )
+ // 368:3: -> ^( PRED_FTS textSearchExpression ( qualifier )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:368:6: ^( PRED_FTS textSearchExpression qualifier )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:368:6: ^( PRED_FTS textSearchExpression ( qualifier )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_FTS, "PRED_FTS"), root_1);
adaptor.addChild(root_1, stream_textSearchExpression.nextTree());
- adaptor.addChild(root_1, stream_qualifier.nextTree());
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:368:38: ( qualifier )?
+ if ( stream_qualifier.hasNext() ) {
+ adaptor.addChild(root_1, stream_qualifier.nextTree());
+
+ }
+ stream_qualifier.reset();
adaptor.addChild(root_0, root_1);
}
@@ -4931,10 +4936,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:372:4: IN_FOLDER folderPredicateArgs
{
- IN_FOLDER125=(Token)match(input,IN_FOLDER,FOLLOW_IN_FOLDER_in_folderPredicate1475); if (state.failed) return retval;
+ IN_FOLDER125=(Token)match(input,IN_FOLDER,FOLLOW_IN_FOLDER_in_folderPredicate1476); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IN_FOLDER.add(IN_FOLDER125);
- pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1478);
+ pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1479);
folderPredicateArgs126=folderPredicateArgs();
state._fsp--;
@@ -4973,10 +4978,10 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:374:10: IN_TREE folderPredicateArgs
{
- IN_TREE127=(Token)match(input,IN_TREE,FOLLOW_IN_TREE_in_folderPredicate1499); if (state.failed) return retval;
+ IN_TREE127=(Token)match(input,IN_TREE,FOLLOW_IN_TREE_in_folderPredicate1500); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IN_TREE.add(IN_TREE127);
- pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1501);
+ pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1502);
folderPredicateArgs128=folderPredicateArgs();
state._fsp--;
@@ -5068,7 +5073,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:379:2: ( LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:379:4: LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN
{
- LPAREN129=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_folderPredicateArgs1523); if (state.failed) return retval;
+ LPAREN129=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_folderPredicateArgs1524); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN129);
// W:\\workspace-cmis\\ANTLR\\CMIS.g:379:11: ( qualifier COMMA | COMMA )?
@@ -5085,13 +5090,13 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:379:12: qualifier COMMA
{
- pushFollow(FOLLOW_qualifier_in_folderPredicateArgs1526);
+ pushFollow(FOLLOW_qualifier_in_folderPredicateArgs1527);
qualifier130=qualifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_qualifier.add(qualifier130.getTree());
- COMMA131=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1528); if (state.failed) return retval;
+ COMMA131=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1529); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA131);
@@ -5100,7 +5105,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:379:30: COMMA
{
- COMMA132=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1532); if (state.failed) return retval;
+ COMMA132=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1533); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA132);
@@ -5109,19 +5114,19 @@ public class CMISParser extends Parser {
}
- pushFollow(FOLLOW_folderId_in_folderPredicateArgs1536);
+ pushFollow(FOLLOW_folderId_in_folderPredicateArgs1537);
folderId133=folderId();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_folderId.add(folderId133.getTree());
- RPAREN134=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_folderPredicateArgs1538); if (state.failed) return retval;
+ RPAREN134=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_folderPredicateArgs1539); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN134);
// AST REWRITE
- // elements: qualifier, folderId
+ // elements: folderId, qualifier
// token labels:
// rule labels: retval
// token list labels:
@@ -5198,13 +5203,13 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:386:2: ( ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:386:4: ORDER BY sortSpecification ( COMMA sortSpecification )*
{
- ORDER135=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1577); if (state.failed) return retval;
+ ORDER135=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1578); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ORDER.add(ORDER135);
- BY136=(Token)match(input,BY,FOLLOW_BY_in_orderByClause1579); if (state.failed) return retval;
+ BY136=(Token)match(input,BY,FOLLOW_BY_in_orderByClause1580); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_BY.add(BY136);
- pushFollow(FOLLOW_sortSpecification_in_orderByClause1581);
+ pushFollow(FOLLOW_sortSpecification_in_orderByClause1582);
sortSpecification137=sortSpecification();
state._fsp--;
@@ -5225,10 +5230,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:386:33: COMMA sortSpecification
{
- COMMA138=(Token)match(input,COMMA,FOLLOW_COMMA_in_orderByClause1585); if (state.failed) return retval;
+ COMMA138=(Token)match(input,COMMA,FOLLOW_COMMA_in_orderByClause1586); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA138);
- pushFollow(FOLLOW_sortSpecification_in_orderByClause1587);
+ pushFollow(FOLLOW_sortSpecification_in_orderByClause1588);
sortSpecification139=sortSpecification();
state._fsp--;
@@ -5246,7 +5251,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: ORDER, sortSpecification
+ // elements: sortSpecification, ORDER
// token labels:
// rule labels: retval
// token list labels:
@@ -5308,7 +5313,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start sortSpecification
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:390:1: sortSpecification : ( columnName -> ^( SORT_SPECIFICATION columnName ASC ) | columnName (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnName $by) );
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:390:1: sortSpecification : ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );
public final CMISParser.sortSpecification_return sortSpecification() throws RecognitionException {
CMISParser.sortSpecification_return retval = new CMISParser.sortSpecification_return();
retval.start = input.LT(1);
@@ -5316,125 +5321,33 @@ public class CMISParser extends Parser {
Object root_0 = null;
Token by=null;
- CMISParser.columnName_return columnName140 = null;
+ CMISParser.columnReference_return columnReference140 = null;
- CMISParser.columnName_return columnName141 = null;
+ CMISParser.columnReference_return columnReference141 = null;
Object by_tree=null;
RewriteRuleTokenStream stream_ASC=new RewriteRuleTokenStream(adaptor,"token ASC");
RewriteRuleTokenStream stream_DESC=new RewriteRuleTokenStream(adaptor,"token DESC");
- RewriteRuleSubtreeStream stream_columnName=new RewriteRuleSubtreeStream(adaptor,"rule columnName");
+ RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:2: ( columnName -> ^( SORT_SPECIFICATION columnName ASC ) | columnName (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnName $by) )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:2: ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) )
int alt41=2;
- int LA41_0 = input.LA(1);
-
- if ( (LA41_0==ID) ) {
- int LA41_1 = input.LA(2);
-
- if ( (LA41_1==EOF||LA41_1==COMMA) ) {
- alt41=1;
- }
- else if ( ((LA41_1>=ASC && LA41_1<=DESC)) ) {
- alt41=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 1, input);
-
- throw nvae;
- }
- }
- else if ( (LA41_0==DOUBLE_QUOTE) ) {
- int LA41_2 = input.LA(2);
-
- if ( (LA41_2==SELECT||LA41_2==AS||(LA41_2>=FROM && LA41_2<=ON)||(LA41_2>=WHERE && LA41_2<=NOT)||(LA41_2>=IN && LA41_2<=DESC)||(LA41_2>=UPPER && LA41_2<=SCORE)) ) {
- int LA41_5 = input.LA(3);
-
- if ( (LA41_5==DOUBLE_QUOTE) ) {
- int LA41_7 = input.LA(4);
-
- if ( (LA41_7==EOF||LA41_7==COMMA) ) {
- alt41=1;
- }
- else if ( ((LA41_7>=ASC && LA41_7<=DESC)) ) {
- alt41=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 7, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 5, input);
-
- throw nvae;
- }
- }
- else if ( (LA41_2==ID) ) {
- int LA41_6 = input.LA(3);
-
- if ( (LA41_6==DOUBLE_QUOTE) ) {
- int LA41_7 = input.LA(4);
-
- if ( (LA41_7==EOF||LA41_7==COMMA) ) {
- alt41=1;
- }
- else if ( ((LA41_7>=ASC && LA41_7<=DESC)) ) {
- alt41=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 7, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 6, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 2, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 41, 0, input);
-
- throw nvae;
- }
+ alt41 = dfa41.predict(input);
switch (alt41) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:4: columnName
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:4: columnReference
{
- pushFollow(FOLLOW_columnName_in_sortSpecification1613);
- columnName140=columnName();
+ pushFollow(FOLLOW_columnReference_in_sortSpecification1614);
+ columnReference140=columnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_columnName.add(columnName140.getTree());
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference140.getTree());
// AST REWRITE
- // elements: columnName
+ // elements: columnReference
// token labels:
// rule labels: retval
// token list labels:
@@ -5444,14 +5357,14 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 392:3: -> ^( SORT_SPECIFICATION columnName ASC )
+ // 392:3: -> ^( SORT_SPECIFICATION columnReference ASC )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:392:6: ^( SORT_SPECIFICATION columnName ASC )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:392:6: ^( SORT_SPECIFICATION columnReference ASC )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SORT_SPECIFICATION, "SORT_SPECIFICATION"), root_1);
- adaptor.addChild(root_1, stream_columnName.nextTree());
+ adaptor.addChild(root_1, stream_columnReference.nextTree());
adaptor.addChild(root_1, (Object)adaptor.create(ASC, "ASC"));
adaptor.addChild(root_0, root_1);
@@ -5463,15 +5376,15 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:4: columnName (by= ASC | by= DESC )
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:4: columnReference (by= ASC | by= DESC )
{
- pushFollow(FOLLOW_columnName_in_sortSpecification1631);
- columnName141=columnName();
+ pushFollow(FOLLOW_columnReference_in_sortSpecification1632);
+ columnReference141=columnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_columnName.add(columnName141.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:15: (by= ASC | by= DESC )
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference141.getTree());
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:20: (by= ASC | by= DESC )
int alt40=2;
int LA40_0 = input.LA(1);
@@ -5490,18 +5403,18 @@ public class CMISParser extends Parser {
}
switch (alt40) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:17: by= ASC
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:22: by= ASC
{
- by=(Token)match(input,ASC,FOLLOW_ASC_in_sortSpecification1637); if (state.failed) return retval;
+ by=(Token)match(input,ASC,FOLLOW_ASC_in_sortSpecification1638); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ASC.add(by);
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:26: by= DESC
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:31: by= DESC
{
- by=(Token)match(input,DESC,FOLLOW_DESC_in_sortSpecification1643); if (state.failed) return retval;
+ by=(Token)match(input,DESC,FOLLOW_DESC_in_sortSpecification1644); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DESC.add(by);
@@ -5513,7 +5426,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: columnName, by
+ // elements: by, columnReference
// token labels: by
// rule labels: retval
// token list labels:
@@ -5524,14 +5437,14 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 394:3: -> ^( SORT_SPECIFICATION columnName $by)
+ // 394:3: -> ^( SORT_SPECIFICATION columnReference $by)
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:394:6: ^( SORT_SPECIFICATION columnName $by)
+ // W:\\workspace-cmis\\ANTLR\\CMIS.g:394:6: ^( SORT_SPECIFICATION columnReference $by)
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SORT_SPECIFICATION, "SORT_SPECIFICATION"), root_1);
- adaptor.addChild(root_1, stream_columnName.nextTree());
+ adaptor.addChild(root_1, stream_columnReference.nextTree());
adaptor.addChild(root_1, stream_by.nextNode());
adaptor.addChild(root_0, root_1);
@@ -5586,7 +5499,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_identifier_in_correlationName1670);
+ pushFollow(FOLLOW_identifier_in_correlationName1671);
identifier142=identifier();
state._fsp--;
@@ -5635,7 +5548,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:406:2: ( identifier -> identifier )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:406:4: identifier
{
- pushFollow(FOLLOW_identifier_in_tableName1684);
+ pushFollow(FOLLOW_identifier_in_tableName1685);
identifier143=identifier();
state._fsp--;
@@ -5703,7 +5616,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:411:2: ( identifier -> identifier )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:411:4: identifier
{
- pushFollow(FOLLOW_identifier_in_columnName1702);
+ pushFollow(FOLLOW_identifier_in_columnName1703);
identifier144=identifier();
state._fsp--;
@@ -5771,7 +5684,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:416:2: ( identifier -> identifier )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:416:4: identifier
{
- pushFollow(FOLLOW_identifier_in_multiValuedColumnName1721);
+ pushFollow(FOLLOW_identifier_in_multiValuedColumnName1722);
identifier145=identifier();
state._fsp--;
@@ -5842,10 +5755,10 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:421:2: ( COLON identifier -> ^( PARAMETER identifier ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:421:4: COLON identifier
{
- COLON146=(Token)match(input,COLON,FOLLOW_COLON_in_parameterName1739); if (state.failed) return retval;
+ COLON146=(Token)match(input,COLON,FOLLOW_COLON_in_parameterName1740); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COLON.add(COLON146);
- pushFollow(FOLLOW_identifier_in_parameterName1741);
+ pushFollow(FOLLOW_identifier_in_parameterName1742);
identifier147=identifier();
state._fsp--;
@@ -5921,7 +5834,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:426:3: ( characterStringLiteral -> characterStringLiteral )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:426:5: characterStringLiteral
{
- pushFollow(FOLLOW_characterStringLiteral_in_folderId1764);
+ pushFollow(FOLLOW_characterStringLiteral_in_folderId1765);
characterStringLiteral148=characterStringLiteral();
state._fsp--;
@@ -5991,7 +5904,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- QUOTED_STRING149=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_textSearchExpression1785); if (state.failed) return retval;
+ QUOTED_STRING149=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_textSearchExpression1786); if (state.failed) return retval;
if ( state.backtracking==0 ) {
QUOTED_STRING149_tree = (Object)adaptor.create(QUOTED_STRING149);
adaptor.addChild(root_0, QUOTED_STRING149_tree);
@@ -6065,7 +5978,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:435:4: ID
{
- ID150=(Token)match(input,ID,FOLLOW_ID_in_identifier1797); if (state.failed) return retval;
+ ID150=(Token)match(input,ID,FOLLOW_ID_in_identifier1798); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID150);
@@ -6093,16 +6006,16 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:437:4: DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE
{
- DOUBLE_QUOTE151=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1808); if (state.failed) return retval;
+ DOUBLE_QUOTE151=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1809); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DOUBLE_QUOTE.add(DOUBLE_QUOTE151);
- pushFollow(FOLLOW_keyWordOrId_in_identifier1810);
+ pushFollow(FOLLOW_keyWordOrId_in_identifier1811);
keyWordOrId152=keyWordOrId();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_keyWordOrId.add(keyWordOrId152.getTree());
- DOUBLE_QUOTE153=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1812); if (state.failed) return retval;
+ DOUBLE_QUOTE153=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1813); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DOUBLE_QUOTE.add(DOUBLE_QUOTE153);
@@ -6196,7 +6109,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:442:4: FLOATING_POINT_LITERAL
{
- FLOATING_POINT_LITERAL154=(Token)match(input,FLOATING_POINT_LITERAL,FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1832); if (state.failed) return retval;
+ FLOATING_POINT_LITERAL154=(Token)match(input,FLOATING_POINT_LITERAL,FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1833); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_FLOATING_POINT_LITERAL.add(FLOATING_POINT_LITERAL154);
@@ -6232,7 +6145,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:444:4: integerLiteral
{
- pushFollow(FOLLOW_integerLiteral_in_signedNumericLiteral1847);
+ pushFollow(FOLLOW_integerLiteral_in_signedNumericLiteral1848);
integerLiteral155=integerLiteral();
state._fsp--;
@@ -6303,7 +6216,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:449:2: ( DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:449:4: DECIMAL_INTEGER_LITERAL
{
- DECIMAL_INTEGER_LITERAL156=(Token)match(input,DECIMAL_INTEGER_LITERAL,FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1866); if (state.failed) return retval;
+ DECIMAL_INTEGER_LITERAL156=(Token)match(input,DECIMAL_INTEGER_LITERAL,FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1867); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DECIMAL_INTEGER_LITERAL.add(DECIMAL_INTEGER_LITERAL156);
@@ -6377,7 +6290,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis\\ANTLR\\CMIS.g:454:2: ( QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) )
// W:\\workspace-cmis\\ANTLR\\CMIS.g:454:4: QUOTED_STRING
{
- QUOTED_STRING157=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_characterStringLiteral1889); if (state.failed) return retval;
+ QUOTED_STRING157=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_characterStringLiteral1890); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_QUOTED_STRING.add(QUOTED_STRING157);
@@ -6528,7 +6441,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:489:4: keyWord
{
- pushFollow(FOLLOW_keyWord_in_keyWordOrId2098);
+ pushFollow(FOLLOW_keyWord_in_keyWordOrId2099);
keyWord159=keyWord();
state._fsp--;
@@ -6559,7 +6472,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis\\ANTLR\\CMIS.g:491:4: ID
{
- ID160=(Token)match(input,ID,FOLLOW_ID_in_keyWordOrId2110); if (state.failed) return retval;
+ ID160=(Token)match(input,ID,FOLLOW_ID_in_keyWordOrId2111); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID160);
@@ -6756,6 +6669,7 @@ public class CMISParser extends Parser {
protected DFA25 dfa25 = new DFA25(this);
protected DFA27 dfa27 = new DFA27(this);
+ protected DFA41 dfa41 = new DFA41(this);
static final String DFA25_eotS =
"\31\uffff";
static final String DFA25_eofS =
@@ -6947,6 +6861,71 @@ public class CMISParser extends Parser {
return "300:1: predicate : ( comparisonPredicate | inPredicate | likePredicate | nullPredicate | quantifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate );";
}
}
+ static final String DFA41_eotS =
+ "\16\uffff";
+ static final String DFA41_eofS =
+ "\1\uffff\1\4\6\uffff\1\4\1\uffff\1\4\2\uffff\1\4";
+ static final String DFA41_minS =
+ "\1\103\1\37\1\35\1\103\2\uffff\2\104\1\37\1\35\1\37\2\104\1\37";
+ static final String DFA41_maxS =
+ "\1\104\1\100\1\111\1\104\2\uffff\2\104\1\100\1\111\1\100\2\104"+
+ "\1\100";
+ static final String DFA41_acceptS =
+ "\4\uffff\1\1\1\2\10\uffff";
+ static final String DFA41_specialS =
+ "\16\uffff}>";
+ static final String[] DFA41_transitionS = {
+ "\1\1\1\2",
+ "\1\4\2\uffff\1\3\34\uffff\2\5",
+ "\1\6\2\uffff\1\6\4\uffff\6\6\1\uffff\4\6\5\uffff\14\6\2\uffff"+
+ "\1\7\3\uffff\3\6",
+ "\1\10\1\11",
+ "",
+ "",
+ "\1\12",
+ "\1\12",
+ "\1\4\37\uffff\2\5",
+ "\1\13\2\uffff\1\13\4\uffff\6\13\1\uffff\4\13\5\uffff\14\13"+
+ "\2\uffff\1\14\3\uffff\3\13",
+ "\1\4\2\uffff\1\3\34\uffff\2\5",
+ "\1\15",
+ "\1\15",
+ "\1\4\37\uffff\2\5"
+ };
+
+ static final short[] DFA41_eot = DFA.unpackEncodedString(DFA41_eotS);
+ static final short[] DFA41_eof = DFA.unpackEncodedString(DFA41_eofS);
+ static final char[] DFA41_min = DFA.unpackEncodedStringToUnsignedChars(DFA41_minS);
+ static final char[] DFA41_max = DFA.unpackEncodedStringToUnsignedChars(DFA41_maxS);
+ static final short[] DFA41_accept = DFA.unpackEncodedString(DFA41_acceptS);
+ static final short[] DFA41_special = DFA.unpackEncodedString(DFA41_specialS);
+ static final short[][] DFA41_transition;
+
+ static {
+ int numStates = DFA41_transitionS.length;
+ DFA41_transition = new short[numStates][];
+ for (int i=0; i ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );";
+ }
+ }
public static final BitSet FOLLOW_SELECT_in_query172 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
@@ -7076,44 +7055,44 @@ public class CMISParser extends Parser {
public static final BitSet FOLLOW_COMMA_in_textSearchPredicate1445 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
public static final BitSet FOLLOW_textSearchExpression_in_textSearchPredicate1449 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_RPAREN_in_textSearchPredicate1451 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_IN_FOLDER_in_folderPredicate1475 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1478 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_IN_TREE_in_folderPredicate1499 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1501 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LPAREN_in_folderPredicateArgs1523 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
- public static final BitSet FOLLOW_qualifier_in_folderPredicateArgs1526 = new BitSet(new long[]{0x0000000080000000L});
- public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1528 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
- public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1532 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
- public static final BitSet FOLLOW_folderId_in_folderPredicateArgs1536 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_folderPredicateArgs1538 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ORDER_in_orderByClause1577 = new BitSet(new long[]{0x4000000000000000L});
- public static final BitSet FOLLOW_BY_in_orderByClause1579 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_sortSpecification_in_orderByClause1581 = new BitSet(new long[]{0x0000000080000002L});
- public static final BitSet FOLLOW_COMMA_in_orderByClause1585 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_sortSpecification_in_orderByClause1587 = new BitSet(new long[]{0x0000000080000002L});
- public static final BitSet FOLLOW_columnName_in_sortSpecification1613 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnName_in_sortSpecification1631 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000001L});
- public static final BitSet FOLLOW_ASC_in_sortSpecification1637 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_DESC_in_sortSpecification1643 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_correlationName1670 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_tableName1684 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_columnName1702 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_multiValuedColumnName1721 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_COLON_in_parameterName1739 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_identifier_in_parameterName1741 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_characterStringLiteral_in_folderId1764 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_QUOTED_STRING_in_textSearchExpression1785 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ID_in_identifier1797 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1808 = new BitSet(new long[]{0xFFE0F7E120000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_keyWordOrId_in_identifier1810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
- public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1812 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1832 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_integerLiteral_in_signedNumericLiteral1847 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1866 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_QUOTED_STRING_in_characterStringLiteral1889 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IN_FOLDER_in_folderPredicate1476 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IN_TREE_in_folderPredicate1500 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1502 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_folderPredicateArgs1524 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_qualifier_in_folderPredicateArgs1527 = new BitSet(new long[]{0x0000000080000000L});
+ public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1529 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1533 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_folderId_in_folderPredicateArgs1537 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_folderPredicateArgs1539 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ORDER_in_orderByClause1578 = new BitSet(new long[]{0x4000000000000000L});
+ public static final BitSet FOLLOW_BY_in_orderByClause1580 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_sortSpecification_in_orderByClause1582 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_COMMA_in_orderByClause1586 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_sortSpecification_in_orderByClause1588 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_columnReference_in_sortSpecification1614 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_sortSpecification1632 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000001L});
+ public static final BitSet FOLLOW_ASC_in_sortSpecification1638 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DESC_in_sortSpecification1644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_correlationName1671 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_tableName1685 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_columnName1703 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_multiValuedColumnName1722 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_COLON_in_parameterName1740 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_identifier_in_parameterName1742 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_characterStringLiteral_in_folderId1765 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_QUOTED_STRING_in_textSearchExpression1786 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ID_in_identifier1798 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1809 = new BitSet(new long[]{0xFFE0F7E120000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_keyWordOrId_in_identifier1811 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+ public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1813 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1833 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_integerLiteral_in_signedNumericLiteral1848 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1867 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_QUOTED_STRING_in_characterStringLiteral1890 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_keyWord0 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_keyWord_in_keyWordOrId2098 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ID_in_keyWordOrId2110 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_keyWord_in_keyWordOrId2099 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ID_in_keyWordOrId2111 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_valueExpression_in_synpred1_CMIS287 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_tableName_in_synpred2_CMIS562 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_joinedTable_in_synpred3_CMIS640 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTS.g b/source/java/org/alfresco/repo/search/impl/parsers/FTS.g
index 576141408b..012b42f551 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/FTS.g
+++ b/source/java/org/alfresco/repo/search/impl/parsers/FTS.g
@@ -68,21 +68,69 @@ tokens
@members
{
+ private Stack paraphrases = new Stack();
+
+ public boolean defaultConjunction()
+ {
+ return true;
+ }
+
+ public boolean defaultFieldConjunction()
+ {
+ return true;
+ }
+
+ protected void mismatch(IntStream input, int ttype, BitSet follow) throws RecognitionException
+ {
+ throw new MismatchedTokenException(ttype, input);
+ }
+
+ public Object recoverFromMismatchedSet(IntStream input, RecognitionException e, BitSet follow) throws RecognitionException
+ {
+ throw e;
+ }
+
+ public String getErrorMessage(RecognitionException e, String[] tokenNames)
+ {
+ List stack = getRuleInvocationStack(e, this.getClass().getName());
+ String msg = null;
+ if(e instanceof NoViableAltException)
+ {
+ NoViableAltException nvae = (NoViableAltException)e;
+ msg = " no viable alt; token="+e.token+
+ " (decision="+nvae.decisionNumber+
+ " state "+nvae.stateNumber+")"+
+ " decision=<<"+nvae.grammarDecisionDescription+">>";
+ }
+ else
+ {
+ msg = super.getErrorMessage(e, tokenNames);
+ }
+ if(paraphrases.size() > 0)
+ {
+ String paraphrase = (String)paraphrases.peek();
+ msg = msg+" "+paraphrase;
+ }
- public boolean defaultConjunction()
- {
- return true;
- }
-
- public boolean defaultFieldConjunction()
- {
- return true;
- }
-
-
+ return stack+" "+msg;
+ }
+
+ public String getTokenErrorDisplay(Token t)
+ {
+ return t.toString();
+ }
}
-fts : ftsImplicitConjunctionOrDisjunction
+@rulecatch
+{
+catch(RecognitionException e)
+{
+ throw e;
+}
+}
+
+fts
+ : ftsImplicitConjunctionOrDisjunction EOF
-> ftsImplicitConjunctionOrDisjunction
;
@@ -104,32 +152,34 @@ ftsExplictConjunction
;
-ftsNot : MINUS ftsTest
+ftsNot
+ : MINUS ftsTest
-> ^(NEGATION ftsTest)
| ftsTest
-> ftsTest
;
-ftsTest : ftsTerm
+ftsTest
+ : ftsTerm
-> ^(TERM ftsTerm)
| ftsExactTerm
-> ^(EXACT_TERM ftsExactTerm)
- | ftsPhrase
- -> ^(PHRASE ftsPhrase)
- | ftsSynonym
- -> ^(SYNONYM ftsSynonym)
- | ftsFieldGroupProximity
- -> ^(FG_PROXIMITY ftsFieldGroupProximity)
- | ftsFieldGroupRange
- -> ^(FG_RANGE ftsFieldGroupRange)
- | ftsFieldGroup
+ | ftsPhrase
+ -> ^(PHRASE ftsPhrase)
+ | ftsSynonym
+ -> ^(SYNONYM ftsSynonym)
+ | ftsFieldGroupProximity
+ -> ^(FG_PROXIMITY ftsFieldGroupProximity)
+ | ftsFieldGroupRange
+ -> ^(FG_RANGE ftsFieldGroupRange)
+ | ftsFieldGroup
| LPAREN ftsImplicitConjunctionOrDisjunction RPAREN
-> ftsImplicitConjunctionOrDisjunction
;
ftsTerm
- : (columnReference COLON)? FTSWORD
- -> FTSWORD columnReference?
+ : (columnReference COLON)? ftsWord
+ -> ftsWord columnReference?
;
ftsExactTerm
@@ -187,16 +237,16 @@ ftsFieldGroupTest
-> ^(FG_PHRASE ftsFieldGroupPhrase)
| ftsFieldGroupSynonym
-> ^(FG_SYNONYM ftsFieldGroupSynonym)
- | ftsFieldGroupProximity
+ | ftsFieldGroupProximity
-> ^(FG_PROXIMITY ftsFieldGroupProximity)
- | ftsFieldGroupRange
- -> ^(FG_RANGE ftsFieldGroupRange)
+ | ftsFieldGroupRange
+ -> ^(FG_RANGE ftsFieldGroupRange)
| LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN
-> ftsFieldGroupImplicitConjunctionOrDisjunction
;
ftsFieldGroupTerm
- : FTSWORD
+ : ftsWord
;
ftsFieldGroupExactTerm
@@ -223,7 +273,7 @@ ftsFieldGroupRange: ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm
;
columnReference
- : ( qualifier=identifier DOT )? name=identifier
+ : ( qualifier=identifier DOT )? name=identifier
-> ^(COLUMN_REF $name $qualifier?)
;
@@ -231,6 +281,11 @@ identifier
: ID
;
+ftsWord
+ : ID
+ | FTSWORD
+ ;
+
OR : ('O'|'o')('R'|'r');
AND : ('A'|'a')('N'|'n')('D'|'d');
NOT : ('N'|'n')('O'|'o')('T'|'t');
@@ -244,6 +299,8 @@ STAR : '*' ;
DOTDOT : '..' ;
DOT : '.' ;
+ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'0'|'_'|'$'|'#')* ;
+
FTSWORD : INWORD+;
fragment
@@ -279,6 +336,4 @@ INWORD : '\u0041' .. '\u005A'
FTSPHRASE
: '"' (~'"' | '""')* '"' ;
-ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'0'|'_'|'$'|'#')* ;
-
WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel = HIDDEN; } ;
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens b/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens
index 4adf08a891..f46e6c263a 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens
+++ b/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens
@@ -1,5 +1,5 @@
TERM=8
-STAR=33
+STAR=32
FG_PROXIMITY=20
CONJUNCTION=6
FG_TERM=16
@@ -7,28 +7,28 @@ EXACT_TERM=9
FIELD_GROUP=15
INWORD=38
FIELD_DISJUNCTION=12
-DOTDOT=34
+DOTDOT=33
NOT=37
FG_EXACT_TERM=17
MINUS=25
-ID=36
+ID=35
AND=24
-FTSWORD=29
+FTSWORD=36
LPAREN=26
PHRASE=10
COLON=28
DISJUNCTION=5
RPAREN=27
-TILDA=32
+TILDA=31
FTS=4
WS=39
FG_SYNONYM=19
NEGATION=7
-FTSPHRASE=31
+FTSPHRASE=30
FIELD_CONJUNCTION=13
OR=23
-PLUS=30
-DOT=35
+PLUS=29
+DOT=34
COLUMN_REF=22
FG_RANGE=21
SYNONYM=11
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java
index 20b7899bef..a5fce29509 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\FTS.g 2008-07-03 14:45:12
+// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\FTS.g 2008-07-15 16:32:02
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -8,7 +8,7 @@ import java.util.ArrayList;
public class FTSLexer extends Lexer {
public static final int TERM=8;
- public static final int STAR=33;
+ public static final int STAR=32;
public static final int FG_PROXIMITY=20;
public static final int CONJUNCTION=6;
public static final int FG_TERM=16;
@@ -16,29 +16,29 @@ public class FTSLexer extends Lexer {
public static final int FIELD_GROUP=15;
public static final int INWORD=38;
public static final int FIELD_DISJUNCTION=12;
- public static final int DOTDOT=34;
+ public static final int DOTDOT=33;
public static final int NOT=37;
public static final int FG_EXACT_TERM=17;
public static final int MINUS=25;
- public static final int ID=36;
+ public static final int ID=35;
public static final int AND=24;
public static final int EOF=-1;
public static final int PHRASE=10;
public static final int LPAREN=26;
- public static final int FTSWORD=29;
+ public static final int FTSWORD=36;
public static final int COLON=28;
public static final int DISJUNCTION=5;
public static final int RPAREN=27;
public static final int FTS=4;
- public static final int TILDA=32;
+ public static final int TILDA=31;
public static final int FG_SYNONYM=19;
public static final int WS=39;
public static final int NEGATION=7;
- public static final int FTSPHRASE=31;
+ public static final int FTSPHRASE=30;
public static final int FIELD_CONJUNCTION=13;
public static final int OR=23;
- public static final int PLUS=30;
- public static final int DOT=35;
+ public static final int PLUS=29;
+ public static final int DOT=34;
public static final int COLUMN_REF=22;
public static final int SYNONYM=11;
public static final int FG_RANGE=21;
@@ -63,8 +63,8 @@ public class FTSLexer extends Lexer {
try {
int _type = OR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:234:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:234:6: ( 'O' | 'o' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:289:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:289:6: ( 'O' | 'o' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -100,8 +100,8 @@ public class FTSLexer extends Lexer {
try {
int _type = AND;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:235:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:235:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:290:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:290:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -146,8 +146,8 @@ public class FTSLexer extends Lexer {
try {
int _type = NOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:236:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:236:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:291:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:291:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
{
if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
input.consume();
@@ -192,8 +192,8 @@ public class FTSLexer extends Lexer {
try {
int _type = TILDA;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:237:7: ( '~' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:237:9: '~'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:292:7: ( '~' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:292:9: '~'
{
match('~');
@@ -212,8 +212,8 @@ public class FTSLexer extends Lexer {
try {
int _type = LPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:238:8: ( '(' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:238:10: '('
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:293:8: ( '(' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:293:10: '('
{
match('(');
@@ -232,8 +232,8 @@ public class FTSLexer extends Lexer {
try {
int _type = RPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:239:8: ( ')' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:239:10: ')'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:294:8: ( ')' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:294:10: ')'
{
match(')');
@@ -252,8 +252,8 @@ public class FTSLexer extends Lexer {
try {
int _type = PLUS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:240:6: ( '+' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:240:8: '+'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:295:6: ( '+' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:295:8: '+'
{
match('+');
@@ -272,8 +272,8 @@ public class FTSLexer extends Lexer {
try {
int _type = MINUS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:241:7: ( '-' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:241:9: '-'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:296:7: ( '-' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:296:9: '-'
{
match('-');
@@ -292,8 +292,8 @@ public class FTSLexer extends Lexer {
try {
int _type = COLON;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:242:7: ( ':' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:242:9: ':'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:297:7: ( ':' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:297:9: ':'
{
match(':');
@@ -312,8 +312,8 @@ public class FTSLexer extends Lexer {
try {
int _type = STAR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:243:6: ( '*' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:243:8: '*'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:298:6: ( '*' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:298:8: '*'
{
match('*');
@@ -332,8 +332,8 @@ public class FTSLexer extends Lexer {
try {
int _type = DOTDOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:244:8: ( '..' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:244:10: '..'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:299:8: ( '..' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:299:10: '..'
{
match("..");
@@ -353,8 +353,8 @@ public class FTSLexer extends Lexer {
try {
int _type = DOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:245:5: ( '.' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:245:7: '.'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:300:5: ( '.' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:300:7: '.'
{
match('.');
@@ -368,29 +368,90 @@ public class FTSLexer extends Lexer {
}
// $ANTLR end DOT
- // $ANTLR start FTSWORD
- public final void mFTSWORD() throws RecognitionException {
+ // $ANTLR start ID
+ public final void mID() throws RecognitionException {
try {
- int _type = FTSWORD;
+ int _type = ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:247:9: ( ( INWORD )+ )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:247:12: ( INWORD )+
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:302:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:302:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:247:12: ( INWORD )+
- int cnt1=0;
+ if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:302:32: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
loop1:
do {
int alt1=2;
int LA1_0 = input.LA(1);
- if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z')||(LA1_0>='\u00C0' && LA1_0<='\u00D6')||(LA1_0>='\u00D8' && LA1_0<='\u00F6')||(LA1_0>='\u00F8' && LA1_0<='\u1FFF')||(LA1_0>='\u3040' && LA1_0<='\u318F')||(LA1_0>='\u3300' && LA1_0<='\u337F')||(LA1_0>='\u3400' && LA1_0<='\u3D2D')||(LA1_0>='\u4E00' && LA1_0<='\u9FFF')||(LA1_0>='\uAC00' && LA1_0<='\uD7AF')||(LA1_0>='\uF900' && LA1_0<='\uFAFF')) ) {
+ if ( ((LA1_0>='#' && LA1_0<='$')||LA1_0=='0'||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) {
alt1=1;
}
switch (alt1) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:247:12: INWORD
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:
+ {
+ if ( (input.LA(1)>='#' && input.LA(1)<='$')||input.LA(1)=='0'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+
+ default :
+ break loop1;
+ }
+ } while (true);
+
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end ID
+
+ // $ANTLR start FTSWORD
+ public final void mFTSWORD() throws RecognitionException {
+ try {
+ int _type = FTSWORD;
+ int _channel = DEFAULT_TOKEN_CHANNEL;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:304:9: ( ( INWORD )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:304:12: ( INWORD )+
+ {
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:304:12: ( INWORD )+
+ int cnt2=0;
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||(LA2_0>='a' && LA2_0<='z')||(LA2_0>='\u00C0' && LA2_0<='\u00D6')||(LA2_0>='\u00D8' && LA2_0<='\u00F6')||(LA2_0>='\u00F8' && LA2_0<='\u1FFF')||(LA2_0>='\u3040' && LA2_0<='\u318F')||(LA2_0>='\u3300' && LA2_0<='\u337F')||(LA2_0>='\u3400' && LA2_0<='\u3D2D')||(LA2_0>='\u4E00' && LA2_0<='\u9FFF')||(LA2_0>='\uAC00' && LA2_0<='\uD7AF')||(LA2_0>='\uF900' && LA2_0<='\uFAFF')) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:304:12: INWORD
{
mINWORD();
@@ -398,12 +459,12 @@ public class FTSLexer extends Lexer {
break;
default :
- if ( cnt1 >= 1 ) break loop1;
+ if ( cnt2 >= 1 ) break loop2;
EarlyExitException eee =
- new EarlyExitException(1, input);
+ new EarlyExitException(2, input);
throw eee;
}
- cnt1++;
+ cnt2++;
} while (true);
@@ -420,7 +481,7 @@ public class FTSLexer extends Lexer {
// $ANTLR start INWORD
public final void mINWORD() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:250:8: ( '\\u0041' .. '\\u005A' | '\\u0061' .. '\\u007A' | '\\u00C0' .. '\\u00D6' | '\\u00D8' .. '\\u00F6' | '\\u00F8' .. '\\u00FF' | '\\u0100' .. '\\u1FFF' | '\\u3040' .. '\\u318F' | '\\u3300' .. '\\u337F' | '\\u3400' .. '\\u3D2D' | '\\u4E00' .. '\\u9FFF' | '\\uF900' .. '\\uFAFF' | '\\uAC00' .. '\\uD7AF' | '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06F0' .. '\\u06F9' | '\\u0966' .. '\\u096F' | '\\u09E6' .. '\\u09EF' | '\\u0A66' .. '\\u0A6F' | '\\u0AE6' .. '\\u0AEF' | '\\u0B66' .. '\\u0B6F' | '\\u0BE7' .. '\\u0BEF' | '\\u0C66' .. '\\u0C6F' | '\\u0CE6' .. '\\u0CEF' | '\\u0D66' .. '\\u0D6F' | '\\u0E50' .. '\\u0E59' | '\\u0ED0' .. '\\u0ED9' | '\\u1040' .. '\\u1049' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:307:8: ( '\\u0041' .. '\\u005A' | '\\u0061' .. '\\u007A' | '\\u00C0' .. '\\u00D6' | '\\u00D8' .. '\\u00F6' | '\\u00F8' .. '\\u00FF' | '\\u0100' .. '\\u1FFF' | '\\u3040' .. '\\u318F' | '\\u3300' .. '\\u337F' | '\\u3400' .. '\\u3D2D' | '\\u4E00' .. '\\u9FFF' | '\\uF900' .. '\\uFAFF' | '\\uAC00' .. '\\uD7AF' | '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06F0' .. '\\u06F9' | '\\u0966' .. '\\u096F' | '\\u09E6' .. '\\u09EF' | '\\u0A66' .. '\\u0A6F' | '\\u0AE6' .. '\\u0AEF' | '\\u0B66' .. '\\u0B6F' | '\\u0BE7' .. '\\u0BEF' | '\\u0C66' .. '\\u0C6F' | '\\u0CE6' .. '\\u0CEF' | '\\u0D66' .. '\\u0D6F' | '\\u0E50' .. '\\u0E59' | '\\u0ED0' .. '\\u0ED9' | '\\u1040' .. '\\u1049' )
// W:\\workspace-cmis\\ANTLR\\FTS.g:
{
if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00D6')||(input.LA(1)>='\u00D8' && input.LA(1)<='\u00F6')||(input.LA(1)>='\u00F8' && input.LA(1)<='\u1FFF')||(input.LA(1)>='\u3040' && input.LA(1)<='\u318F')||(input.LA(1)>='\u3300' && input.LA(1)<='\u337F')||(input.LA(1)>='\u3400' && input.LA(1)<='\u3D2D')||(input.LA(1)>='\u4E00' && input.LA(1)<='\u9FFF')||(input.LA(1)>='\uAC00' && input.LA(1)<='\uD7AF')||(input.LA(1)>='\uF900' && input.LA(1)<='\uFAFF') ) {
@@ -446,33 +507,33 @@ public class FTSLexer extends Lexer {
try {
int _type = FTSPHRASE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:280:2: ( '\"' (~ '\"' | '\"\"' )* '\"' )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:280:4: '\"' (~ '\"' | '\"\"' )* '\"'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:337:2: ( '\"' (~ '\"' | '\"\"' )* '\"' )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:337:4: '\"' (~ '\"' | '\"\"' )* '\"'
{
match('\"');
- // W:\\workspace-cmis\\ANTLR\\FTS.g:280:8: (~ '\"' | '\"\"' )*
- loop2:
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:337:8: (~ '\"' | '\"\"' )*
+ loop3:
do {
- int alt2=3;
- int LA2_0 = input.LA(1);
+ int alt3=3;
+ int LA3_0 = input.LA(1);
- if ( (LA2_0=='\"') ) {
- int LA2_1 = input.LA(2);
+ if ( (LA3_0=='\"') ) {
+ int LA3_1 = input.LA(2);
- if ( (LA2_1=='\"') ) {
- alt2=2;
+ if ( (LA3_1=='\"') ) {
+ alt3=2;
}
}
- else if ( ((LA2_0>='\u0000' && LA2_0<='!')||(LA2_0>='#' && LA2_0<='\uFFFE')) ) {
- alt2=1;
+ else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='\uFFFE')) ) {
+ alt3=1;
}
- switch (alt2) {
+ switch (alt3) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:280:9: ~ '\"'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:337:9: ~ '\"'
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFE') ) {
input.consume();
@@ -487,7 +548,7 @@ public class FTSLexer extends Lexer {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:280:16: '\"\"'
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:337:16: '\"\"'
{
match("\"\"");
@@ -496,7 +557,7 @@ public class FTSLexer extends Lexer {
break;
default :
- break loop2;
+ break loop3;
}
} while (true);
@@ -512,76 +573,15 @@ public class FTSLexer extends Lexer {
}
// $ANTLR end FTSPHRASE
- // $ANTLR start ID
- public final void mID() throws RecognitionException {
- try {
- int _type = ID;
- int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:282:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:282:6: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
- {
- if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
- input.consume();
-
- }
- else {
- MismatchedSetException mse = new MismatchedSetException(null,input);
- recover(mse);
- throw mse;}
-
- // W:\\workspace-cmis\\ANTLR\\FTS.g:282:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
- loop3:
- do {
- int alt3=2;
- int LA3_0 = input.LA(1);
-
- if ( ((LA3_0>='#' && LA3_0<='$')||LA3_0=='0'||(LA3_0>='A' && LA3_0<='Z')||LA3_0=='_'||(LA3_0>='a' && LA3_0<='z')) ) {
- alt3=1;
- }
-
-
- switch (alt3) {
- case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:
- {
- if ( (input.LA(1)>='#' && input.LA(1)<='$')||input.LA(1)=='0'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
- input.consume();
-
- }
- else {
- MismatchedSetException mse = new MismatchedSetException(null,input);
- recover(mse);
- throw mse;}
-
-
- }
- break;
-
- default :
- break loop3;
- }
- } while (true);
-
-
- }
-
- state.type = _type;
- state.channel = _channel;
- }
- finally {
- }
- }
- // $ANTLR end ID
-
// $ANTLR start WS
public final void mWS() throws RecognitionException {
try {
int _type = WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\FTS.g:284:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:284:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:339:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:339:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:284:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:339:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt4=0;
loop4:
do {
@@ -632,7 +632,7 @@ public class FTSLexer extends Lexer {
// $ANTLR end WS
public void mTokens() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:1:8: ( OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | FTSWORD | FTSPHRASE | ID | WS )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:1:8: ( OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | ID | FTSWORD | FTSPHRASE | WS )
int alt5=16;
alt5 = dfa5.predict(input);
switch (alt5) {
@@ -721,24 +721,24 @@ public class FTSLexer extends Lexer {
}
break;
case 13 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:1:74: FTSWORD
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:1:74: ID
+ {
+ mID();
+
+ }
+ break;
+ case 14 :
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:1:77: FTSWORD
{
mFTSWORD();
}
break;
- case 14 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:1:82: FTSPHRASE
+ case 15 :
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:1:85: FTSPHRASE
{
mFTSPHRASE();
- }
- break;
- case 15 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:1:92: ID
- {
- mID();
-
}
break;
case 16 :
@@ -756,34 +756,40 @@ public class FTSLexer extends Lexer {
protected DFA5 dfa5 = new DFA5(this);
static final String DFA5_eotS =
- "\1\uffff\3\16\7\uffff\1\26\1\16\4\uffff\1\27\3\16\3\uffff\1\32"+
+ "\1\uffff\3\15\7\uffff\1\26\1\15\4\uffff\1\27\3\15\3\uffff\1\32"+
"\1\33\2\uffff";
static final String DFA5_eofS =
"\34\uffff";
static final String DFA5_minS =
- "\1\11\3\43\7\uffff\1\56\1\43\4\uffff\4\43\3\uffff\2\43\2\uffff";
+ "\1\11\3\60\7\uffff\1\56\1\60\4\uffff\1\43\3\60\3\uffff\2\43\2\uffff";
static final String DFA5_maxS =
- "\1\ufaff\3\172\7\uffff\1\56\1\172\4\uffff\1\ufaff\3\172\3\uffff"+
- "\2\ufaff\2\uffff";
+ "\4\ufaff\7\uffff\1\56\1\ufaff\4\uffff\4\ufaff\3\uffff\2\ufaff\2"+
+ "\uffff";
static final String DFA5_acceptS =
- "\4\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff\1\16\1\15\1\17"+
+ "\4\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff\1\15\1\16\1\17"+
"\1\20\4\uffff\1\13\1\14\1\1\2\uffff\1\2\1\3";
static final String DFA5_specialS =
"\34\uffff}>";
static final String[] DFA5_transitionS = {
- "\2\20\2\uffff\1\20\22\uffff\1\20\1\uffff\1\15\5\uffff\1\5\1"+
+ "\2\20\2\uffff\1\20\22\uffff\1\20\1\uffff\1\17\5\uffff\1\5\1"+
"\6\1\12\1\7\1\uffff\1\10\1\13\1\uffff\12\16\1\11\6\uffff\1\2"+
- "\14\14\1\3\1\1\13\14\4\uffff\1\17\1\uffff\1\2\14\14\1\3\1\1"+
+ "\14\14\1\3\1\1\13\14\4\uffff\1\15\1\uffff\1\2\14\14\1\3\1\1"+
"\13\14\3\uffff\1\4\101\uffff\27\16\1\uffff\37\16\1\uffff\u1f08"+
"\16\u1040\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e"+
"\16\u10d2\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200"+
"\16",
- "\2\17\13\uffff\1\22\20\uffff\21\22\1\21\10\22\4\uffff\1\17"+
- "\1\uffff\21\22\1\21\10\22",
- "\2\17\13\uffff\1\22\20\uffff\15\22\1\23\14\22\4\uffff\1\17"+
- "\1\uffff\15\22\1\23\14\22",
- "\2\17\13\uffff\1\22\20\uffff\16\22\1\24\13\22\4\uffff\1\17"+
- "\1\uffff\16\22\1\24\13\22",
+ "\1\22\11\16\7\uffff\21\22\1\21\10\22\6\uffff\21\22\1\21\10"+
+ "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+
+ "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+
+ "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
+ "\1\22\11\16\7\uffff\15\22\1\23\14\22\6\uffff\15\22\1\23\14"+
+ "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+
+ "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+
+ "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
+ "\1\22\11\16\7\uffff\16\22\1\24\13\22\6\uffff\16\22\1\24\13"+
+ "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+
+ "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+
+ "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
"",
"",
"",
@@ -792,30 +798,38 @@ public class FTSLexer extends Lexer {
"",
"",
"\1\25",
- "\2\17\13\uffff\1\22\20\uffff\32\22\4\uffff\1\17\1\uffff\32"+
- "\22",
+ "\1\22\11\16\7\uffff\32\22\6\uffff\32\22\105\uffff\27\16\1"+
+ "\uffff\37\16\1\uffff\u1f08\16\u1040\uffff\u0150\16\u0170\uffff"+
+ "\u0080\16\u0080\uffff\u092e\16\u10d2\uffff\u5200\16\u0c00\uffff"+
+ "\u2bb0\16\u2150\uffff\u0200\16",
"",
"",
"",
"",
- "\2\17\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\17\1\uffff"+
+ "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+
"\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+
"\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+
"\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
- "\2\17\13\uffff\1\22\20\uffff\32\22\4\uffff\1\17\1\uffff\32"+
- "\22",
- "\2\17\13\uffff\1\22\20\uffff\3\22\1\30\26\22\4\uffff\1\17"+
- "\1\uffff\3\22\1\30\26\22",
- "\2\17\13\uffff\1\22\20\uffff\23\22\1\31\6\22\4\uffff\1\17"+
- "\1\uffff\23\22\1\31\6\22",
+ "\1\22\11\16\7\uffff\32\22\6\uffff\32\22\105\uffff\27\16\1"+
+ "\uffff\37\16\1\uffff\u1f08\16\u1040\uffff\u0150\16\u0170\uffff"+
+ "\u0080\16\u0080\uffff\u092e\16\u10d2\uffff\u5200\16\u0c00\uffff"+
+ "\u2bb0\16\u2150\uffff\u0200\16",
+ "\1\22\11\16\7\uffff\3\22\1\30\26\22\6\uffff\3\22\1\30\26\22"+
+ "\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+
+ "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+
+ "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
+ "\1\22\11\16\7\uffff\23\22\1\31\6\22\6\uffff\23\22\1\31\6\22"+
+ "\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+
+ "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+
+ "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
"",
"",
"",
- "\2\17\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\17\1\uffff"+
+ "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+
"\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+
"\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+
"\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
- "\2\17\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\17\1\uffff"+
+ "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+
"\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+
"\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+
"\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16",
@@ -853,7 +867,7 @@ public class FTSLexer extends Lexer {
this.transition = DFA5_transition;
}
public String getDescription() {
- return "1:1: Tokens : ( OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | FTSWORD | FTSPHRASE | ID | WS );";
+ return "1:1: Tokens : ( OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | ID | FTSWORD | FTSPHRASE | WS );";
}
}
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java
index 04f7552b69..90ba3b14ca 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\FTS.g 2008-07-03 14:45:12
+// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\FTS.g 2008-07-15 16:32:01
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -11,10 +11,10 @@ import org.antlr.runtime.tree.*;
public class FTSParser extends Parser {
public static final String[] tokenNames = new String[] {
- "", "", "", "", "FTS", "DISJUNCTION", "CONJUNCTION", "NEGATION", "TERM", "EXACT_TERM", "PHRASE", "SYNONYM", "FIELD_DISJUNCTION", "FIELD_CONJUNCTION", "FIELD_NEGATION", "FIELD_GROUP", "FG_TERM", "FG_EXACT_TERM", "FG_PHRASE", "FG_SYNONYM", "FG_PROXIMITY", "FG_RANGE", "COLUMN_REF", "OR", "AND", "MINUS", "LPAREN", "RPAREN", "COLON", "FTSWORD", "PLUS", "FTSPHRASE", "TILDA", "STAR", "DOTDOT", "DOT", "ID", "NOT", "INWORD", "WS"
+ "", "", "", "", "FTS", "DISJUNCTION", "CONJUNCTION", "NEGATION", "TERM", "EXACT_TERM", "PHRASE", "SYNONYM", "FIELD_DISJUNCTION", "FIELD_CONJUNCTION", "FIELD_NEGATION", "FIELD_GROUP", "FG_TERM", "FG_EXACT_TERM", "FG_PHRASE", "FG_SYNONYM", "FG_PROXIMITY", "FG_RANGE", "COLUMN_REF", "OR", "AND", "MINUS", "LPAREN", "RPAREN", "COLON", "PLUS", "FTSPHRASE", "TILDA", "STAR", "DOTDOT", "DOT", "ID", "FTSWORD", "NOT", "INWORD", "WS"
};
public static final int TERM=8;
- public static final int STAR=33;
+ public static final int STAR=32;
public static final int FG_PROXIMITY=20;
public static final int CONJUNCTION=6;
public static final int FG_TERM=16;
@@ -22,29 +22,29 @@ public class FTSParser extends Parser {
public static final int FIELD_GROUP=15;
public static final int INWORD=38;
public static final int FIELD_DISJUNCTION=12;
- public static final int DOTDOT=34;
+ public static final int DOTDOT=33;
public static final int NOT=37;
public static final int FG_EXACT_TERM=17;
public static final int MINUS=25;
- public static final int ID=36;
+ public static final int ID=35;
public static final int AND=24;
public static final int EOF=-1;
- public static final int FTSWORD=29;
+ public static final int FTSWORD=36;
public static final int LPAREN=26;
public static final int PHRASE=10;
public static final int COLON=28;
public static final int DISJUNCTION=5;
public static final int RPAREN=27;
- public static final int TILDA=32;
+ public static final int TILDA=31;
public static final int FTS=4;
public static final int WS=39;
public static final int FG_SYNONYM=19;
public static final int NEGATION=7;
- public static final int FTSPHRASE=31;
+ public static final int FTSPHRASE=30;
public static final int FIELD_CONJUNCTION=13;
public static final int OR=23;
- public static final int PLUS=30;
- public static final int DOT=35;
+ public static final int PLUS=29;
+ public static final int DOT=34;
public static final int COLUMN_REF=22;
public static final int FG_RANGE=21;
public static final int SYNONYM=11;
@@ -75,18 +75,57 @@ public class FTSParser extends Parser {
public String getGrammarFileName() { return "W:\\workspace-cmis\\ANTLR\\FTS.g"; }
+ private Stack paraphrases = new Stack();
+
+ public boolean defaultConjunction()
+ {
+ return true;
+ }
+
+ public boolean defaultFieldConjunction()
+ {
+ return true;
+ }
+
+ protected void mismatch(IntStream input, int ttype, BitSet follow) throws RecognitionException
+ {
+ throw new MismatchedTokenException(ttype, input);
+ }
+
+ public Object recoverFromMismatchedSet(IntStream input, RecognitionException e, BitSet follow) throws RecognitionException
+ {
+ throw e;
+ }
+
+ public String getErrorMessage(RecognitionException e, String[] tokenNames)
+ {
+ List stack = getRuleInvocationStack(e, this.getClass().getName());
+ String msg = null;
+ if(e instanceof NoViableAltException)
+ {
+ NoViableAltException nvae = (NoViableAltException)e;
+ msg = " no viable alt; token="+e.token+
+ " (decision="+nvae.decisionNumber+
+ " state "+nvae.stateNumber+")"+
+ " decision=<<"+nvae.grammarDecisionDescription+">>";
+ }
+ else
+ {
+ msg = super.getErrorMessage(e, tokenNames);
+ }
+ if(paraphrases.size() > 0)
+ {
+ String paraphrase = (String)paraphrases.peek();
+ msg = msg+" "+paraphrase;
+ }
- public boolean defaultConjunction()
- {
- return true;
- }
-
- public boolean defaultFieldConjunction()
- {
- return true;
- }
-
-
+ return stack+" "+msg;
+ }
+
+ public String getTokenErrorDisplay(Token t)
+ {
+ return t.toString();
+ }
public static class fts_return extends ParserRuleReturnScope {
@@ -95,27 +134,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start fts
- // W:\\workspace-cmis\\ANTLR\\FTS.g:85:1: fts : ftsImplicitConjunctionOrDisjunction -> ftsImplicitConjunctionOrDisjunction ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:132:1: fts : ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ;
public final FTSParser.fts_return fts() throws RecognitionException {
FTSParser.fts_return retval = new FTSParser.fts_return();
retval.start = input.LT(1);
Object root_0 = null;
+ Token EOF2=null;
FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction1 = null;
+ Object EOF2_tree=null;
+ RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
RewriteRuleSubtreeStream stream_ftsImplicitConjunctionOrDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsImplicitConjunctionOrDisjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:85:5: ( ftsImplicitConjunctionOrDisjunction -> ftsImplicitConjunctionOrDisjunction )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:85:8: ftsImplicitConjunctionOrDisjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:133:5: ( ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:133:8: ftsImplicitConjunctionOrDisjunction EOF
{
- pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts135);
+ pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts146);
ftsImplicitConjunctionOrDisjunction1=ftsImplicitConjunctionOrDisjunction();
state._fsp--;
stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction1.getTree());
+ EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_fts148);
+ stream_EOF.add(EOF2);
+
// AST REWRITE
@@ -128,7 +173,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 86:3: -> ftsImplicitConjunctionOrDisjunction
+ // 134:3: -> ftsImplicitConjunctionOrDisjunction
{
adaptor.addChild(root_0, stream_ftsImplicitConjunctionOrDisjunction.nextTree());
@@ -143,11 +188,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -161,61 +205,61 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsImplicitConjunctionOrDisjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:89:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:137:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );
public final FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction() throws RecognitionException {
FTSParser.ftsImplicitConjunctionOrDisjunction_return retval = new FTSParser.ftsImplicitConjunctionOrDisjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction2 = null;
-
FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction3 = null;
FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction4 = null;
FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction5 = null;
+ FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction6 = null;
+
RewriteRuleSubtreeStream stream_ftsExplicitDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsExplicitDisjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:90:2: ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:138:2: ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) )
int alt3=2;
alt3 = dfa3.predict(input);
switch (alt3) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:90:4: {...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:138:4: {...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )*
{
if ( !(defaultConjunction()) ) {
throw new FailedPredicateException(input, "ftsImplicitConjunctionOrDisjunction", "defaultConjunction()");
}
- pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction157);
- ftsExplicitDisjunction2=ftsExplicitDisjunction();
+ pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction170);
+ ftsExplicitDisjunction3=ftsExplicitDisjunction();
state._fsp--;
- stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction2.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:90:51: ( ftsExplicitDisjunction )*
+ stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction3.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:138:51: ( ftsExplicitDisjunction )*
loop1:
do {
int alt1=2;
int LA1_0 = input.LA(1);
- if ( ((LA1_0>=MINUS && LA1_0<=LPAREN)||(LA1_0>=FTSWORD && LA1_0<=TILDA)||LA1_0==ID) ) {
+ if ( ((LA1_0>=MINUS && LA1_0<=LPAREN)||(LA1_0>=PLUS && LA1_0<=TILDA)||(LA1_0>=ID && LA1_0<=FTSWORD)) ) {
alt1=1;
}
switch (alt1) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:90:52: ftsExplicitDisjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:138:52: ftsExplicitDisjunction
{
- pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction160);
- ftsExplicitDisjunction3=ftsExplicitDisjunction();
+ pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction173);
+ ftsExplicitDisjunction4=ftsExplicitDisjunction();
state._fsp--;
- stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction3.getTree());
+ stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction4.getTree());
}
break;
@@ -237,9 +281,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 91:3: -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ )
+ // 139:3: -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:91:6: ^( CONJUNCTION ( ftsExplicitDisjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:139:6: ^( CONJUNCTION ( ftsExplicitDisjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONJUNCTION, "CONJUNCTION"), root_1);
@@ -262,35 +306,35 @@ public class FTSParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:92:5: ftsExplicitDisjunction ( ftsExplicitDisjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:140:5: ftsExplicitDisjunction ( ftsExplicitDisjunction )*
{
- pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction179);
- ftsExplicitDisjunction4=ftsExplicitDisjunction();
+ pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction192);
+ ftsExplicitDisjunction5=ftsExplicitDisjunction();
state._fsp--;
- stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction4.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:92:28: ( ftsExplicitDisjunction )*
+ stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction5.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:140:28: ( ftsExplicitDisjunction )*
loop2:
do {
int alt2=2;
int LA2_0 = input.LA(1);
- if ( ((LA2_0>=MINUS && LA2_0<=LPAREN)||(LA2_0>=FTSWORD && LA2_0<=TILDA)||LA2_0==ID) ) {
+ if ( ((LA2_0>=MINUS && LA2_0<=LPAREN)||(LA2_0>=PLUS && LA2_0<=TILDA)||(LA2_0>=ID && LA2_0<=FTSWORD)) ) {
alt2=1;
}
switch (alt2) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:92:29: ftsExplicitDisjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:140:29: ftsExplicitDisjunction
{
- pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction182);
- ftsExplicitDisjunction5=ftsExplicitDisjunction();
+ pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction195);
+ ftsExplicitDisjunction6=ftsExplicitDisjunction();
state._fsp--;
- stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction5.getTree());
+ stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction6.getTree());
}
break;
@@ -312,9 +356,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 93:3: -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ )
+ // 141:3: -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:93:6: ^( DISJUNCTION ( ftsExplicitDisjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:141:6: ^( DISJUNCTION ( ftsExplicitDisjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DISJUNCTION, "DISJUNCTION"), root_1);
@@ -344,11 +388,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -362,33 +405,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsExplicitDisjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:96:1: ftsExplicitDisjunction : ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:144:1: ftsExplicitDisjunction : ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ;
public final FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction() throws RecognitionException {
FTSParser.ftsExplicitDisjunction_return retval = new FTSParser.ftsExplicitDisjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token OR7=null;
- FTSParser.ftsExplictConjunction_return ftsExplictConjunction6 = null;
+ Token OR8=null;
+ FTSParser.ftsExplictConjunction_return ftsExplictConjunction7 = null;
- FTSParser.ftsExplictConjunction_return ftsExplictConjunction8 = null;
+ FTSParser.ftsExplictConjunction_return ftsExplictConjunction9 = null;
- Object OR7_tree=null;
+ Object OR8_tree=null;
RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR");
RewriteRuleSubtreeStream stream_ftsExplictConjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsExplictConjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:97:2: ( ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:97:4: ftsExplictConjunction ( OR ftsExplictConjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:145:2: ( ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:145:4: ftsExplictConjunction ( OR ftsExplictConjunction )*
{
- pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction207);
- ftsExplictConjunction6=ftsExplictConjunction();
+ pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction220);
+ ftsExplictConjunction7=ftsExplictConjunction();
state._fsp--;
- stream_ftsExplictConjunction.add(ftsExplictConjunction6.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:97:26: ( OR ftsExplictConjunction )*
+ stream_ftsExplictConjunction.add(ftsExplictConjunction7.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:145:26: ( OR ftsExplictConjunction )*
loop4:
do {
int alt4=2;
@@ -401,17 +444,17 @@ public class FTSParser extends Parser {
switch (alt4) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:97:27: OR ftsExplictConjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:145:27: OR ftsExplictConjunction
{
- OR7=(Token)match(input,OR,FOLLOW_OR_in_ftsExplicitDisjunction210);
- stream_OR.add(OR7);
+ OR8=(Token)match(input,OR,FOLLOW_OR_in_ftsExplicitDisjunction223);
+ stream_OR.add(OR8);
- pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction212);
- ftsExplictConjunction8=ftsExplictConjunction();
+ pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction225);
+ ftsExplictConjunction9=ftsExplictConjunction();
state._fsp--;
- stream_ftsExplictConjunction.add(ftsExplictConjunction8.getTree());
+ stream_ftsExplictConjunction.add(ftsExplictConjunction9.getTree());
}
break;
@@ -433,9 +476,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 98:3: -> ^( DISJUNCTION ( ftsExplictConjunction )+ )
+ // 146:3: -> ^( DISJUNCTION ( ftsExplictConjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:98:6: ^( DISJUNCTION ( ftsExplictConjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:146:6: ^( DISJUNCTION ( ftsExplictConjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DISJUNCTION, "DISJUNCTION"), root_1);
@@ -463,11 +506,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -481,33 +523,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsExplictConjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:101:1: ftsExplictConjunction : ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:149:1: ftsExplictConjunction : ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) ;
public final FTSParser.ftsExplictConjunction_return ftsExplictConjunction() throws RecognitionException {
FTSParser.ftsExplictConjunction_return retval = new FTSParser.ftsExplictConjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token AND10=null;
- FTSParser.ftsNot_return ftsNot9 = null;
+ Token AND11=null;
+ FTSParser.ftsNot_return ftsNot10 = null;
- FTSParser.ftsNot_return ftsNot11 = null;
+ FTSParser.ftsNot_return ftsNot12 = null;
- Object AND10_tree=null;
+ Object AND11_tree=null;
RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND");
RewriteRuleSubtreeStream stream_ftsNot=new RewriteRuleSubtreeStream(adaptor,"rule ftsNot");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:102:2: ( ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:102:4: ftsNot ( AND ftsNot )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:150:2: ( ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:150:4: ftsNot ( AND ftsNot )*
{
- pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction237);
- ftsNot9=ftsNot();
+ pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction250);
+ ftsNot10=ftsNot();
state._fsp--;
- stream_ftsNot.add(ftsNot9.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:102:11: ( AND ftsNot )*
+ stream_ftsNot.add(ftsNot10.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:150:11: ( AND ftsNot )*
loop5:
do {
int alt5=2;
@@ -520,17 +562,17 @@ public class FTSParser extends Parser {
switch (alt5) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:102:12: AND ftsNot
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:150:12: AND ftsNot
{
- AND10=(Token)match(input,AND,FOLLOW_AND_in_ftsExplictConjunction240);
- stream_AND.add(AND10);
+ AND11=(Token)match(input,AND,FOLLOW_AND_in_ftsExplictConjunction253);
+ stream_AND.add(AND11);
- pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction242);
- ftsNot11=ftsNot();
+ pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction255);
+ ftsNot12=ftsNot();
state._fsp--;
- stream_ftsNot.add(ftsNot11.getTree());
+ stream_ftsNot.add(ftsNot12.getTree());
}
break;
@@ -552,9 +594,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 103:3: -> ^( CONJUNCTION ftsNot )
+ // 151:3: -> ^( CONJUNCTION ftsNot )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:103:6: ^( CONJUNCTION ftsNot )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:151:6: ^( CONJUNCTION ftsNot )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONJUNCTION, "CONJUNCTION"), root_1);
@@ -575,11 +617,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -593,31 +634,31 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsNot
- // W:\\workspace-cmis\\ANTLR\\FTS.g:107:1: ftsNot : ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:155:1: ftsNot : ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest );
public final FTSParser.ftsNot_return ftsNot() throws RecognitionException {
FTSParser.ftsNot_return retval = new FTSParser.ftsNot_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token MINUS12=null;
- FTSParser.ftsTest_return ftsTest13 = null;
-
+ Token MINUS13=null;
FTSParser.ftsTest_return ftsTest14 = null;
+ FTSParser.ftsTest_return ftsTest15 = null;
- Object MINUS12_tree=null;
+
+ Object MINUS13_tree=null;
RewriteRuleTokenStream stream_MINUS=new RewriteRuleTokenStream(adaptor,"token MINUS");
RewriteRuleSubtreeStream stream_ftsTest=new RewriteRuleSubtreeStream(adaptor,"rule ftsTest");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:107:9: ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:156:5: ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest )
int alt6=2;
int LA6_0 = input.LA(1);
if ( (LA6_0==MINUS) ) {
alt6=1;
}
- else if ( (LA6_0==LPAREN||(LA6_0>=FTSWORD && LA6_0<=TILDA)||LA6_0==ID) ) {
+ else if ( (LA6_0==LPAREN||(LA6_0>=PLUS && LA6_0<=TILDA)||(LA6_0>=ID && LA6_0<=FTSWORD)) ) {
alt6=2;
}
else {
@@ -628,50 +669,12 @@ public class FTSParser extends Parser {
}
switch (alt6) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:107:11: MINUS ftsTest
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:156:7: MINUS ftsTest
{
- MINUS12=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsNot268);
- stream_MINUS.add(MINUS12);
+ MINUS13=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsNot286);
+ stream_MINUS.add(MINUS13);
- pushFollow(FOLLOW_ftsTest_in_ftsNot270);
- ftsTest13=ftsTest();
-
- state._fsp--;
-
- stream_ftsTest.add(ftsTest13.getTree());
-
-
- // AST REWRITE
- // elements: ftsTest
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- retval.tree = root_0;
- RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = (Object)adaptor.nil();
- // 108:3: -> ^( NEGATION ftsTest )
- {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:108:6: ^( NEGATION ftsTest )
- {
- Object root_1 = (Object)adaptor.nil();
- root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATION, "NEGATION"), root_1);
-
- adaptor.addChild(root_1, stream_ftsTest.nextTree());
-
- adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;retval.tree = root_0;
- }
- break;
- case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:109:4: ftsTest
- {
- pushFollow(FOLLOW_ftsTest_in_ftsNot285);
+ pushFollow(FOLLOW_ftsTest_in_ftsNot288);
ftsTest14=ftsTest();
state._fsp--;
@@ -689,7 +692,45 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 110:3: -> ftsTest
+ // 157:3: -> ^( NEGATION ftsTest )
+ {
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:157:6: ^( NEGATION ftsTest )
+ {
+ Object root_1 = (Object)adaptor.nil();
+ root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATION, "NEGATION"), root_1);
+
+ adaptor.addChild(root_1, stream_ftsTest.nextTree());
+
+ adaptor.addChild(root_0, root_1);
+ }
+
+ }
+
+ retval.tree = root_0;retval.tree = root_0;
+ }
+ break;
+ case 2 :
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:158:4: ftsTest
+ {
+ pushFollow(FOLLOW_ftsTest_in_ftsNot303);
+ ftsTest15=ftsTest();
+
+ state._fsp--;
+
+ stream_ftsTest.add(ftsTest15.getTree());
+
+
+ // AST REWRITE
+ // elements: ftsTest
+ // token labels:
+ // rule labels: retval
+ // token list labels:
+ // rule list labels:
+ retval.tree = root_0;
+ RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+ root_0 = (Object)adaptor.nil();
+ // 159:3: -> ftsTest
{
adaptor.addChild(root_0, stream_ftsTest.nextTree());
@@ -706,11 +747,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -724,34 +764,34 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsTest
- // W:\\workspace-cmis\\ANTLR\\FTS.g:113:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:162:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );
public final FTSParser.ftsTest_return ftsTest() throws RecognitionException {
FTSParser.ftsTest_return retval = new FTSParser.ftsTest_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token LPAREN22=null;
- Token RPAREN24=null;
- FTSParser.ftsTerm_return ftsTerm15 = null;
+ Token LPAREN23=null;
+ Token RPAREN25=null;
+ FTSParser.ftsTerm_return ftsTerm16 = null;
- FTSParser.ftsExactTerm_return ftsExactTerm16 = null;
+ FTSParser.ftsExactTerm_return ftsExactTerm17 = null;
- FTSParser.ftsPhrase_return ftsPhrase17 = null;
+ FTSParser.ftsPhrase_return ftsPhrase18 = null;
- FTSParser.ftsSynonym_return ftsSynonym18 = null;
+ FTSParser.ftsSynonym_return ftsSynonym19 = null;
- FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity19 = null;
+ FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity20 = null;
- FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange20 = null;
+ FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange21 = null;
- FTSParser.ftsFieldGroup_return ftsFieldGroup21 = null;
+ FTSParser.ftsFieldGroup_return ftsFieldGroup22 = null;
- FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction23 = null;
+ FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction24 = null;
- Object LPAREN22_tree=null;
- Object RPAREN24_tree=null;
+ Object LPAREN23_tree=null;
+ Object RPAREN25_tree=null;
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleSubtreeStream stream_ftsFieldGroupRange=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupRange");
@@ -762,19 +802,19 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_ftsSynonym=new RewriteRuleSubtreeStream(adaptor,"rule ftsSynonym");
RewriteRuleSubtreeStream stream_ftsFieldGroupProximity=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupProximity");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:113:9: ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:163:5: ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction )
int alt7=8;
alt7 = dfa7.predict(input);
switch (alt7) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:113:11: ftsTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:163:7: ftsTerm
{
- pushFollow(FOLLOW_ftsTerm_in_ftsTest301);
- ftsTerm15=ftsTerm();
+ pushFollow(FOLLOW_ftsTerm_in_ftsTest324);
+ ftsTerm16=ftsTerm();
state._fsp--;
- stream_ftsTerm.add(ftsTerm15.getTree());
+ stream_ftsTerm.add(ftsTerm16.getTree());
// AST REWRITE
@@ -787,9 +827,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 114:3: -> ^( TERM ftsTerm )
+ // 164:3: -> ^( TERM ftsTerm )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:114:6: ^( TERM ftsTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:164:6: ^( TERM ftsTerm )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TERM, "TERM"), root_1);
@@ -805,14 +845,14 @@ public class FTSParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:115:4: ftsExactTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:165:4: ftsExactTerm
{
- pushFollow(FOLLOW_ftsExactTerm_in_ftsTest316);
- ftsExactTerm16=ftsExactTerm();
+ pushFollow(FOLLOW_ftsExactTerm_in_ftsTest339);
+ ftsExactTerm17=ftsExactTerm();
state._fsp--;
- stream_ftsExactTerm.add(ftsExactTerm16.getTree());
+ stream_ftsExactTerm.add(ftsExactTerm17.getTree());
// AST REWRITE
@@ -825,9 +865,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 116:3: -> ^( EXACT_TERM ftsExactTerm )
+ // 166:3: -> ^( EXACT_TERM ftsExactTerm )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:116:6: ^( EXACT_TERM ftsExactTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:166:6: ^( EXACT_TERM ftsExactTerm )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXACT_TERM, "EXACT_TERM"), root_1);
@@ -843,14 +883,14 @@ public class FTSParser extends Parser {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:117:17: ftsPhrase
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:167:9: ftsPhrase
{
- pushFollow(FOLLOW_ftsPhrase_in_ftsTest344);
- ftsPhrase17=ftsPhrase();
+ pushFollow(FOLLOW_ftsPhrase_in_ftsTest359);
+ ftsPhrase18=ftsPhrase();
state._fsp--;
- stream_ftsPhrase.add(ftsPhrase17.getTree());
+ stream_ftsPhrase.add(ftsPhrase18.getTree());
// AST REWRITE
@@ -863,9 +903,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 118:10: -> ^( PHRASE ftsPhrase )
+ // 168:9: -> ^( PHRASE ftsPhrase )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:118:13: ^( PHRASE ftsPhrase )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:168:12: ^( PHRASE ftsPhrase )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PHRASE, "PHRASE"), root_1);
@@ -881,14 +921,14 @@ public class FTSParser extends Parser {
}
break;
case 4 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:119:17: ftsSynonym
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:169:9: ftsSynonym
{
- pushFollow(FOLLOW_ftsSynonym_in_ftsTest379);
- ftsSynonym18=ftsSynonym();
+ pushFollow(FOLLOW_ftsSynonym_in_ftsTest385);
+ ftsSynonym19=ftsSynonym();
state._fsp--;
- stream_ftsSynonym.add(ftsSynonym18.getTree());
+ stream_ftsSynonym.add(ftsSynonym19.getTree());
// AST REWRITE
@@ -901,9 +941,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 120:10: -> ^( SYNONYM ftsSynonym )
+ // 170:9: -> ^( SYNONYM ftsSynonym )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:120:13: ^( SYNONYM ftsSynonym )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:170:12: ^( SYNONYM ftsSynonym )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SYNONYM, "SYNONYM"), root_1);
@@ -919,14 +959,14 @@ public class FTSParser extends Parser {
}
break;
case 5 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:121:11: ftsFieldGroupProximity
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:171:7: ftsFieldGroupProximity
{
- pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsTest408);
- ftsFieldGroupProximity19=ftsFieldGroupProximity();
+ pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsTest409);
+ ftsFieldGroupProximity20=ftsFieldGroupProximity();
state._fsp--;
- stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity19.getTree());
+ stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity20.getTree());
// AST REWRITE
@@ -939,9 +979,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 122:10: -> ^( FG_PROXIMITY ftsFieldGroupProximity )
+ // 172:9: -> ^( FG_PROXIMITY ftsFieldGroupProximity )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:122:13: ^( FG_PROXIMITY ftsFieldGroupProximity )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:172:12: ^( FG_PROXIMITY ftsFieldGroupProximity )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PROXIMITY, "FG_PROXIMITY"), root_1);
@@ -957,14 +997,14 @@ public class FTSParser extends Parser {
}
break;
case 6 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:123:12: ftsFieldGroupRange
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:173:8: ftsFieldGroupRange
{
- pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsTest440);
- ftsFieldGroupRange20=ftsFieldGroupRange();
+ pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsTest436);
+ ftsFieldGroupRange21=ftsFieldGroupRange();
state._fsp--;
- stream_ftsFieldGroupRange.add(ftsFieldGroupRange20.getTree());
+ stream_ftsFieldGroupRange.add(ftsFieldGroupRange21.getTree());
// AST REWRITE
@@ -977,9 +1017,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 124:10: -> ^( FG_RANGE ftsFieldGroupRange )
+ // 174:9: -> ^( FG_RANGE ftsFieldGroupRange )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:124:13: ^( FG_RANGE ftsFieldGroupRange )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:174:12: ^( FG_RANGE ftsFieldGroupRange )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_RANGE, "FG_RANGE"), root_1);
@@ -995,33 +1035,33 @@ public class FTSParser extends Parser {
}
break;
case 7 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:125:11: ftsFieldGroup
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:175:7: ftsFieldGroup
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_ftsFieldGroup_in_ftsTest469);
- ftsFieldGroup21=ftsFieldGroup();
+ pushFollow(FOLLOW_ftsFieldGroup_in_ftsTest460);
+ ftsFieldGroup22=ftsFieldGroup();
state._fsp--;
- adaptor.addChild(root_0, ftsFieldGroup21.getTree());
+ adaptor.addChild(root_0, ftsFieldGroup22.getTree());
}
break;
case 8 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:126:4: LPAREN ftsImplicitConjunctionOrDisjunction RPAREN
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:176:4: LPAREN ftsImplicitConjunctionOrDisjunction RPAREN
{
- LPAREN22=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsTest478);
- stream_LPAREN.add(LPAREN22);
+ LPAREN23=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsTest469);
+ stream_LPAREN.add(LPAREN23);
- pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest480);
- ftsImplicitConjunctionOrDisjunction23=ftsImplicitConjunctionOrDisjunction();
+ pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest471);
+ ftsImplicitConjunctionOrDisjunction24=ftsImplicitConjunctionOrDisjunction();
state._fsp--;
- stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction23.getTree());
- RPAREN24=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsTest482);
- stream_RPAREN.add(RPAREN24);
+ stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction24.getTree());
+ RPAREN25=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsTest473);
+ stream_RPAREN.add(RPAREN25);
@@ -1035,7 +1075,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 127:3: -> ftsImplicitConjunctionOrDisjunction
+ // 177:3: -> ftsImplicitConjunctionOrDisjunction
{
adaptor.addChild(root_0, stream_ftsImplicitConjunctionOrDisjunction.nextTree());
@@ -1052,11 +1092,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1070,46 +1109,50 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsTerm
- // W:\\workspace-cmis\\ANTLR\\FTS.g:130:1: ftsTerm : ( columnReference COLON )? FTSWORD -> FTSWORD ( columnReference )? ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:180:1: ftsTerm : ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? ;
public final FTSParser.ftsTerm_return ftsTerm() throws RecognitionException {
FTSParser.ftsTerm_return retval = new FTSParser.ftsTerm_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token COLON26=null;
- Token FTSWORD27=null;
- FTSParser.columnReference_return columnReference25 = null;
+ Token COLON27=null;
+ FTSParser.columnReference_return columnReference26 = null;
+
+ FTSParser.ftsWord_return ftsWord28 = null;
- Object COLON26_tree=null;
- Object FTSWORD27_tree=null;
+ Object COLON27_tree=null;
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
- RewriteRuleTokenStream stream_FTSWORD=new RewriteRuleTokenStream(adaptor,"token FTSWORD");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
+ RewriteRuleSubtreeStream stream_ftsWord=new RewriteRuleSubtreeStream(adaptor,"rule ftsWord");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:131:2: ( ( columnReference COLON )? FTSWORD -> FTSWORD ( columnReference )? )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:131:4: ( columnReference COLON )? FTSWORD
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:181:2: ( ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:181:4: ( columnReference COLON )? ftsWord
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:131:4: ( columnReference COLON )?
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:181:4: ( columnReference COLON )?
int alt8=2;
int LA8_0 = input.LA(1);
if ( (LA8_0==ID) ) {
- alt8=1;
+ int LA8_1 = input.LA(2);
+
+ if ( (LA8_1==COLON||LA8_1==DOT) ) {
+ alt8=1;
+ }
}
switch (alt8) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:131:5: columnReference COLON
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:181:5: columnReference COLON
{
- pushFollow(FOLLOW_columnReference_in_ftsTerm500);
- columnReference25=columnReference();
+ pushFollow(FOLLOW_columnReference_in_ftsTerm491);
+ columnReference26=columnReference();
state._fsp--;
- stream_columnReference.add(columnReference25.getTree());
- COLON26=(Token)match(input,COLON,FOLLOW_COLON_in_ftsTerm502);
- stream_COLON.add(COLON26);
+ stream_columnReference.add(columnReference26.getTree());
+ COLON27=(Token)match(input,COLON,FOLLOW_COLON_in_ftsTerm493);
+ stream_COLON.add(COLON27);
}
@@ -1117,13 +1160,16 @@ public class FTSParser extends Parser {
}
- FTSWORD27=(Token)match(input,FTSWORD,FOLLOW_FTSWORD_in_ftsTerm506);
- stream_FTSWORD.add(FTSWORD27);
+ pushFollow(FOLLOW_ftsWord_in_ftsTerm497);
+ ftsWord28=ftsWord();
+ state._fsp--;
+
+ stream_ftsWord.add(ftsWord28.getTree());
// AST REWRITE
- // elements: FTSWORD, columnReference
+ // elements: columnReference, ftsWord
// token labels:
// rule labels: retval
// token list labels:
@@ -1132,10 +1178,10 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 132:3: -> FTSWORD ( columnReference )?
+ // 182:3: -> ftsWord ( columnReference )?
{
- adaptor.addChild(root_0, stream_FTSWORD.nextNode());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:132:14: ( columnReference )?
+ adaptor.addChild(root_0, stream_ftsWord.nextTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:182:14: ( columnReference )?
if ( stream_columnReference.hasNext() ) {
adaptor.addChild(root_0, stream_columnReference.nextTree());
@@ -1153,11 +1199,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1171,33 +1216,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsExactTerm
- // W:\\workspace-cmis\\ANTLR\\FTS.g:135:1: ftsExactTerm : PLUS ftsTerm -> ftsTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:185:1: ftsExactTerm : PLUS ftsTerm -> ftsTerm ;
public final FTSParser.ftsExactTerm_return ftsExactTerm() throws RecognitionException {
FTSParser.ftsExactTerm_return retval = new FTSParser.ftsExactTerm_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token PLUS28=null;
- FTSParser.ftsTerm_return ftsTerm29 = null;
+ Token PLUS29=null;
+ FTSParser.ftsTerm_return ftsTerm30 = null;
- Object PLUS28_tree=null;
+ Object PLUS29_tree=null;
RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS");
RewriteRuleSubtreeStream stream_ftsTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:136:2: ( PLUS ftsTerm -> ftsTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:136:4: PLUS ftsTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:186:2: ( PLUS ftsTerm -> ftsTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:186:4: PLUS ftsTerm
{
- PLUS28=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsExactTerm527);
- stream_PLUS.add(PLUS28);
+ PLUS29=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsExactTerm518);
+ stream_PLUS.add(PLUS29);
- pushFollow(FOLLOW_ftsTerm_in_ftsExactTerm529);
- ftsTerm29=ftsTerm();
+ pushFollow(FOLLOW_ftsTerm_in_ftsExactTerm520);
+ ftsTerm30=ftsTerm();
state._fsp--;
- stream_ftsTerm.add(ftsTerm29.getTree());
+ stream_ftsTerm.add(ftsTerm30.getTree());
// AST REWRITE
@@ -1210,7 +1255,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 137:3: -> ftsTerm
+ // 187:3: -> ftsTerm
{
adaptor.addChild(root_0, stream_ftsTerm.nextTree());
@@ -1225,11 +1270,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1243,28 +1287,28 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsPhrase
- // W:\\workspace-cmis\\ANTLR\\FTS.g:140:1: ftsPhrase : ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:190:1: ftsPhrase : ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ;
public final FTSParser.ftsPhrase_return ftsPhrase() throws RecognitionException {
FTSParser.ftsPhrase_return retval = new FTSParser.ftsPhrase_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token COLON31=null;
- Token FTSPHRASE32=null;
- FTSParser.columnReference_return columnReference30 = null;
+ Token COLON32=null;
+ Token FTSPHRASE33=null;
+ FTSParser.columnReference_return columnReference31 = null;
- Object COLON31_tree=null;
- Object FTSPHRASE32_tree=null;
+ Object COLON32_tree=null;
+ Object FTSPHRASE33_tree=null;
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
RewriteRuleTokenStream stream_FTSPHRASE=new RewriteRuleTokenStream(adaptor,"token FTSPHRASE");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:141:2: ( ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:141:6: ( columnReference COLON )? FTSPHRASE
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:191:2: ( ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:191:6: ( columnReference COLON )? FTSPHRASE
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:141:6: ( columnReference COLON )?
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:191:6: ( columnReference COLON )?
int alt9=2;
int LA9_0 = input.LA(1);
@@ -1273,16 +1317,16 @@ public class FTSParser extends Parser {
}
switch (alt9) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:141:7: columnReference COLON
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:191:7: columnReference COLON
{
- pushFollow(FOLLOW_columnReference_in_ftsPhrase550);
- columnReference30=columnReference();
+ pushFollow(FOLLOW_columnReference_in_ftsPhrase541);
+ columnReference31=columnReference();
state._fsp--;
- stream_columnReference.add(columnReference30.getTree());
- COLON31=(Token)match(input,COLON,FOLLOW_COLON_in_ftsPhrase552);
- stream_COLON.add(COLON31);
+ stream_columnReference.add(columnReference31.getTree());
+ COLON32=(Token)match(input,COLON,FOLLOW_COLON_in_ftsPhrase543);
+ stream_COLON.add(COLON32);
}
@@ -1290,8 +1334,8 @@ public class FTSParser extends Parser {
}
- FTSPHRASE32=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsPhrase556);
- stream_FTSPHRASE.add(FTSPHRASE32);
+ FTSPHRASE33=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsPhrase547);
+ stream_FTSPHRASE.add(FTSPHRASE33);
@@ -1305,10 +1349,10 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 142:3: -> FTSPHRASE ( columnReference )?
+ // 192:3: -> FTSPHRASE ( columnReference )?
{
adaptor.addChild(root_0, stream_FTSPHRASE.nextNode());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:142:16: ( columnReference )?
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:192:16: ( columnReference )?
if ( stream_columnReference.hasNext() ) {
adaptor.addChild(root_0, stream_columnReference.nextTree());
@@ -1326,11 +1370,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1344,33 +1387,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsSynonym
- // W:\\workspace-cmis\\ANTLR\\FTS.g:145:1: ftsSynonym : TILDA ftsTerm -> ftsTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:195:1: ftsSynonym : TILDA ftsTerm -> ftsTerm ;
public final FTSParser.ftsSynonym_return ftsSynonym() throws RecognitionException {
FTSParser.ftsSynonym_return retval = new FTSParser.ftsSynonym_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token TILDA33=null;
- FTSParser.ftsTerm_return ftsTerm34 = null;
+ Token TILDA34=null;
+ FTSParser.ftsTerm_return ftsTerm35 = null;
- Object TILDA33_tree=null;
+ Object TILDA34_tree=null;
RewriteRuleTokenStream stream_TILDA=new RewriteRuleTokenStream(adaptor,"token TILDA");
RewriteRuleSubtreeStream stream_ftsTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:146:2: ( TILDA ftsTerm -> ftsTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:146:4: TILDA ftsTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:196:2: ( TILDA ftsTerm -> ftsTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:196:4: TILDA ftsTerm
{
- TILDA33=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsSynonym577);
- stream_TILDA.add(TILDA33);
+ TILDA34=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsSynonym568);
+ stream_TILDA.add(TILDA34);
- pushFollow(FOLLOW_ftsTerm_in_ftsSynonym579);
- ftsTerm34=ftsTerm();
+ pushFollow(FOLLOW_ftsTerm_in_ftsSynonym570);
+ ftsTerm35=ftsTerm();
state._fsp--;
- stream_ftsTerm.add(ftsTerm34.getTree());
+ stream_ftsTerm.add(ftsTerm35.getTree());
// AST REWRITE
@@ -1383,7 +1426,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 147:3: -> ftsTerm
+ // 197:3: -> ftsTerm
{
adaptor.addChild(root_0, stream_ftsTerm.nextTree());
@@ -1398,11 +1441,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1416,58 +1458,58 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroup
- // W:\\workspace-cmis\\ANTLR\\FTS.g:151:1: ftsFieldGroup : columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:201:1: ftsFieldGroup : columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ;
public final FTSParser.ftsFieldGroup_return ftsFieldGroup() throws RecognitionException {
FTSParser.ftsFieldGroup_return retval = new FTSParser.ftsFieldGroup_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token COLON36=null;
- Token LPAREN37=null;
- Token RPAREN39=null;
- FTSParser.columnReference_return columnReference35 = null;
+ Token COLON37=null;
+ Token LPAREN38=null;
+ Token RPAREN40=null;
+ FTSParser.columnReference_return columnReference36 = null;
- FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction38 = null;
+ FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction39 = null;
- Object COLON36_tree=null;
- Object LPAREN37_tree=null;
- Object RPAREN39_tree=null;
+ Object COLON37_tree=null;
+ Object LPAREN38_tree=null;
+ Object RPAREN40_tree=null;
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_ftsFieldGroupImplicitConjunctionOrDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupImplicitConjunctionOrDisjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:152:2: ( columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:152:4: columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:202:2: ( columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:202:4: columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN
{
- pushFollow(FOLLOW_columnReference_in_ftsFieldGroup598);
- columnReference35=columnReference();
+ pushFollow(FOLLOW_columnReference_in_ftsFieldGroup589);
+ columnReference36=columnReference();
state._fsp--;
- stream_columnReference.add(columnReference35.getTree());
- COLON36=(Token)match(input,COLON,FOLLOW_COLON_in_ftsFieldGroup600);
- stream_COLON.add(COLON36);
+ stream_columnReference.add(columnReference36.getTree());
+ COLON37=(Token)match(input,COLON,FOLLOW_COLON_in_ftsFieldGroup591);
+ stream_COLON.add(COLON37);
- LPAREN37=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroup602);
- stream_LPAREN.add(LPAREN37);
+ LPAREN38=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroup593);
+ stream_LPAREN.add(LPAREN38);
- pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup604);
- ftsFieldGroupImplicitConjunctionOrDisjunction38=ftsFieldGroupImplicitConjunctionOrDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup595);
+ ftsFieldGroupImplicitConjunctionOrDisjunction39=ftsFieldGroupImplicitConjunctionOrDisjunction();
state._fsp--;
- stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction38.getTree());
- RPAREN39=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroup606);
- stream_RPAREN.add(RPAREN39);
+ stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction39.getTree());
+ RPAREN40=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroup597);
+ stream_RPAREN.add(RPAREN40);
// AST REWRITE
- // elements: columnReference, ftsFieldGroupImplicitConjunctionOrDisjunction
+ // elements: ftsFieldGroupImplicitConjunctionOrDisjunction, columnReference
// token labels:
// rule labels: retval
// token list labels:
@@ -1476,9 +1518,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 153:3: -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction )
+ // 203:3: -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:153:6: ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:203:6: ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_GROUP, "FIELD_GROUP"), root_1);
@@ -1500,11 +1542,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1518,25 +1559,25 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupImplicitConjunctionOrDisjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:156:1: ftsFieldGroupImplicitConjunctionOrDisjunction : ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:206:1: ftsFieldGroupImplicitConjunctionOrDisjunction : ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) );
public final FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction() throws RecognitionException {
FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return retval = new FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction40 = null;
-
FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction41 = null;
FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction42 = null;
FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction43 = null;
+ FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction44 = null;
+
RewriteRuleSubtreeStream stream_ftsFieldGroupExplicitDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExplicitDisjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:157:2: ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:207:2: ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) )
int alt12=2;
switch ( input.LA(1) ) {
case MINUS:
@@ -1557,6 +1598,7 @@ public class FTSParser extends Parser {
}
}
break;
+ case ID:
case FTSWORD:
{
int LA12_2 = input.LA(2);
@@ -1656,38 +1698,38 @@ public class FTSParser extends Parser {
switch (alt12) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:157:4: {...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:207:4: {...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )*
{
if ( !(defaultFieldConjunction()) ) {
throw new FailedPredicateException(input, "ftsFieldGroupImplicitConjunctionOrDisjunction", "defaultFieldConjunction()");
}
- pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction632);
- ftsFieldGroupExplicitDisjunction40=ftsFieldGroupExplicitDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction623);
+ ftsFieldGroupExplicitDisjunction41=ftsFieldGroupExplicitDisjunction();
state._fsp--;
- stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction40.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:157:66: ( ftsFieldGroupExplicitDisjunction )*
+ stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction41.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:207:66: ( ftsFieldGroupExplicitDisjunction )*
loop10:
do {
int alt10=2;
int LA10_0 = input.LA(1);
- if ( ((LA10_0>=MINUS && LA10_0<=LPAREN)||(LA10_0>=FTSWORD && LA10_0<=TILDA)) ) {
+ if ( ((LA10_0>=MINUS && LA10_0<=LPAREN)||(LA10_0>=PLUS && LA10_0<=TILDA)||(LA10_0>=ID && LA10_0<=FTSWORD)) ) {
alt10=1;
}
switch (alt10) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:157:67: ftsFieldGroupExplicitDisjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:207:67: ftsFieldGroupExplicitDisjunction
{
- pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction635);
- ftsFieldGroupExplicitDisjunction41=ftsFieldGroupExplicitDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction626);
+ ftsFieldGroupExplicitDisjunction42=ftsFieldGroupExplicitDisjunction();
state._fsp--;
- stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction41.getTree());
+ stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction42.getTree());
}
break;
@@ -1709,9 +1751,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 158:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
+ // 208:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:158:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:208:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_CONJUNCTION, "FIELD_CONJUNCTION"), root_1);
@@ -1734,35 +1776,35 @@ public class FTSParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:159:4: ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:209:4: ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )*
{
- pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction653);
- ftsFieldGroupExplicitDisjunction42=ftsFieldGroupExplicitDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction644);
+ ftsFieldGroupExplicitDisjunction43=ftsFieldGroupExplicitDisjunction();
state._fsp--;
- stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction42.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:159:37: ( ftsFieldGroupExplicitDisjunction )*
+ stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction43.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:209:37: ( ftsFieldGroupExplicitDisjunction )*
loop11:
do {
int alt11=2;
int LA11_0 = input.LA(1);
- if ( ((LA11_0>=MINUS && LA11_0<=LPAREN)||(LA11_0>=FTSWORD && LA11_0<=TILDA)) ) {
+ if ( ((LA11_0>=MINUS && LA11_0<=LPAREN)||(LA11_0>=PLUS && LA11_0<=TILDA)||(LA11_0>=ID && LA11_0<=FTSWORD)) ) {
alt11=1;
}
switch (alt11) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:159:38: ftsFieldGroupExplicitDisjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:209:38: ftsFieldGroupExplicitDisjunction
{
- pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction656);
- ftsFieldGroupExplicitDisjunction43=ftsFieldGroupExplicitDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction647);
+ ftsFieldGroupExplicitDisjunction44=ftsFieldGroupExplicitDisjunction();
state._fsp--;
- stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction43.getTree());
+ stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction44.getTree());
}
break;
@@ -1784,9 +1826,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 160:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
+ // 210:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:160:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:210:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DISJUNCTION, "FIELD_DISJUNCTION"), root_1);
@@ -1816,11 +1858,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1834,33 +1875,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupExplicitDisjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:163:1: ftsFieldGroupExplicitDisjunction : ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:213:1: ftsFieldGroupExplicitDisjunction : ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ;
public final FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction() throws RecognitionException {
FTSParser.ftsFieldGroupExplicitDisjunction_return retval = new FTSParser.ftsFieldGroupExplicitDisjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token OR45=null;
- FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction44 = null;
+ Token OR46=null;
+ FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction45 = null;
- FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction46 = null;
+ FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction47 = null;
- Object OR45_tree=null;
+ Object OR46_tree=null;
RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR");
RewriteRuleSubtreeStream stream_ftsFieldGroupExplictConjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExplictConjunction");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:164:2: ( ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:164:4: ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:214:2: ( ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:214:4: ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )*
{
- pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction681);
- ftsFieldGroupExplictConjunction44=ftsFieldGroupExplictConjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction672);
+ ftsFieldGroupExplictConjunction45=ftsFieldGroupExplictConjunction();
state._fsp--;
- stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction44.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:164:36: ( OR ftsFieldGroupExplictConjunction )*
+ stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction45.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:214:36: ( OR ftsFieldGroupExplictConjunction )*
loop13:
do {
int alt13=2;
@@ -1873,17 +1914,17 @@ public class FTSParser extends Parser {
switch (alt13) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:164:37: OR ftsFieldGroupExplictConjunction
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:214:37: OR ftsFieldGroupExplictConjunction
{
- OR45=(Token)match(input,OR,FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction684);
- stream_OR.add(OR45);
+ OR46=(Token)match(input,OR,FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction675);
+ stream_OR.add(OR46);
- pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction686);
- ftsFieldGroupExplictConjunction46=ftsFieldGroupExplictConjunction();
+ pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction677);
+ ftsFieldGroupExplictConjunction47=ftsFieldGroupExplictConjunction();
state._fsp--;
- stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction46.getTree());
+ stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction47.getTree());
}
break;
@@ -1905,9 +1946,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 165:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ )
+ // 215:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:165:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:215:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DISJUNCTION, "FIELD_DISJUNCTION"), root_1);
@@ -1935,11 +1976,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -1953,33 +1993,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupExplictConjunction
- // W:\\workspace-cmis\\ANTLR\\FTS.g:168:1: ftsFieldGroupExplictConjunction : ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:218:1: ftsFieldGroupExplictConjunction : ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) ;
public final FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction() throws RecognitionException {
FTSParser.ftsFieldGroupExplictConjunction_return retval = new FTSParser.ftsFieldGroupExplictConjunction_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token AND48=null;
- FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot47 = null;
+ Token AND49=null;
+ FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot48 = null;
- FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot49 = null;
+ FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot50 = null;
- Object AND48_tree=null;
+ Object AND49_tree=null;
RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND");
RewriteRuleSubtreeStream stream_ftsFieldGroupNot=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupNot");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:169:2: ( ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:169:4: ftsFieldGroupNot ( AND ftsFieldGroupNot )*
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:219:2: ( ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:219:4: ftsFieldGroupNot ( AND ftsFieldGroupNot )*
{
- pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction711);
- ftsFieldGroupNot47=ftsFieldGroupNot();
+ pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction702);
+ ftsFieldGroupNot48=ftsFieldGroupNot();
state._fsp--;
- stream_ftsFieldGroupNot.add(ftsFieldGroupNot47.getTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:169:21: ( AND ftsFieldGroupNot )*
+ stream_ftsFieldGroupNot.add(ftsFieldGroupNot48.getTree());
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:219:21: ( AND ftsFieldGroupNot )*
loop14:
do {
int alt14=2;
@@ -1992,17 +2032,17 @@ public class FTSParser extends Parser {
switch (alt14) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:169:22: AND ftsFieldGroupNot
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:219:22: AND ftsFieldGroupNot
{
- AND48=(Token)match(input,AND,FOLLOW_AND_in_ftsFieldGroupExplictConjunction714);
- stream_AND.add(AND48);
+ AND49=(Token)match(input,AND,FOLLOW_AND_in_ftsFieldGroupExplictConjunction705);
+ stream_AND.add(AND49);
- pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction716);
- ftsFieldGroupNot49=ftsFieldGroupNot();
+ pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction707);
+ ftsFieldGroupNot50=ftsFieldGroupNot();
state._fsp--;
- stream_ftsFieldGroupNot.add(ftsFieldGroupNot49.getTree());
+ stream_ftsFieldGroupNot.add(ftsFieldGroupNot50.getTree());
}
break;
@@ -2024,9 +2064,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 170:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ )
+ // 220:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:170:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:220:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_CONJUNCTION, "FIELD_CONJUNCTION"), root_1);
@@ -2054,11 +2094,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2072,31 +2111,31 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupNot
- // W:\\workspace-cmis\\ANTLR\\FTS.g:174:1: ftsFieldGroupNot : ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:224:1: ftsFieldGroupNot : ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest );
public final FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot() throws RecognitionException {
FTSParser.ftsFieldGroupNot_return retval = new FTSParser.ftsFieldGroupNot_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token MINUS50=null;
- FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest51 = null;
-
+ Token MINUS51=null;
FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest52 = null;
+ FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest53 = null;
- Object MINUS50_tree=null;
+
+ Object MINUS51_tree=null;
RewriteRuleTokenStream stream_MINUS=new RewriteRuleTokenStream(adaptor,"token MINUS");
RewriteRuleSubtreeStream stream_ftsFieldGroupTest=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTest");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:174:19: ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:224:19: ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest )
int alt15=2;
int LA15_0 = input.LA(1);
if ( (LA15_0==MINUS) ) {
alt15=1;
}
- else if ( (LA15_0==LPAREN||(LA15_0>=FTSWORD && LA15_0<=TILDA)) ) {
+ else if ( (LA15_0==LPAREN||(LA15_0>=PLUS && LA15_0<=TILDA)||(LA15_0>=ID && LA15_0<=FTSWORD)) ) {
alt15=2;
}
else {
@@ -2107,43 +2146,12 @@ public class FTSParser extends Parser {
}
switch (alt15) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:174:21: MINUS ftsFieldGroupTest
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:224:21: MINUS ftsFieldGroupTest
{
- MINUS50=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsFieldGroupNot743);
- stream_MINUS.add(MINUS50);
+ MINUS51=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsFieldGroupNot734);
+ stream_MINUS.add(MINUS51);
- pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot745);
- ftsFieldGroupTest51=ftsFieldGroupTest();
-
- state._fsp--;
-
- stream_ftsFieldGroupTest.add(ftsFieldGroupTest51.getTree());
-
-
- // AST REWRITE
- // elements: ftsFieldGroupTest
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- retval.tree = root_0;
- RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = (Object)adaptor.nil();
- // 175:4: -> FIELD_NEGATION ftsFieldGroupTest
- {
- adaptor.addChild(root_0, (Object)adaptor.create(FIELD_NEGATION, "FIELD_NEGATION"));
- adaptor.addChild(root_0, stream_ftsFieldGroupTest.nextTree());
-
- }
-
- retval.tree = root_0;retval.tree = root_0;
- }
- break;
- case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:176:5: ftsFieldGroupTest
- {
- pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot760);
+ pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot736);
ftsFieldGroupTest52=ftsFieldGroupTest();
state._fsp--;
@@ -2161,7 +2169,38 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 177:4: -> ftsFieldGroupTest
+ // 225:4: -> FIELD_NEGATION ftsFieldGroupTest
+ {
+ adaptor.addChild(root_0, (Object)adaptor.create(FIELD_NEGATION, "FIELD_NEGATION"));
+ adaptor.addChild(root_0, stream_ftsFieldGroupTest.nextTree());
+
+ }
+
+ retval.tree = root_0;retval.tree = root_0;
+ }
+ break;
+ case 2 :
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:226:5: ftsFieldGroupTest
+ {
+ pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot751);
+ ftsFieldGroupTest53=ftsFieldGroupTest();
+
+ state._fsp--;
+
+ stream_ftsFieldGroupTest.add(ftsFieldGroupTest53.getTree());
+
+
+ // AST REWRITE
+ // elements: ftsFieldGroupTest
+ // token labels:
+ // rule labels: retval
+ // token list labels:
+ // rule list labels:
+ retval.tree = root_0;
+ RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+ root_0 = (Object)adaptor.nil();
+ // 227:4: -> ftsFieldGroupTest
{
adaptor.addChild(root_0, stream_ftsFieldGroupTest.nextTree());
@@ -2178,11 +2217,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2196,32 +2234,32 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupTest
- // W:\\workspace-cmis\\ANTLR\\FTS.g:181:1: ftsFieldGroupTest : ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction );
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:231:1: ftsFieldGroupTest : ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction );
public final FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest() throws RecognitionException {
FTSParser.ftsFieldGroupTest_return retval = new FTSParser.ftsFieldGroupTest_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token LPAREN59=null;
- Token RPAREN61=null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm53 = null;
+ Token LPAREN60=null;
+ Token RPAREN62=null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm54 = null;
- FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm54 = null;
+ FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm55 = null;
- FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase55 = null;
+ FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase56 = null;
- FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym56 = null;
+ FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym57 = null;
- FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity57 = null;
+ FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity58 = null;
- FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange58 = null;
+ FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange59 = null;
- FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction60 = null;
+ FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction61 = null;
- Object LPAREN59_tree=null;
- Object RPAREN61_tree=null;
+ Object LPAREN60_tree=null;
+ Object RPAREN62_tree=null;
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleSubtreeStream stream_ftsFieldGroupRange=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupRange");
@@ -2232,12 +2270,18 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_ftsFieldGroupExactTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExactTerm");
RewriteRuleSubtreeStream stream_ftsFieldGroupProximity=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupProximity");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:182:2: ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:232:2: ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction )
int alt16=7;
switch ( input.LA(1) ) {
+ case ID:
case FTSWORD:
{
switch ( input.LA(2) ) {
+ case DOTDOT:
+ {
+ alt16=6;
+ }
+ break;
case STAR:
{
alt16=5;
@@ -2248,19 +2292,15 @@ public class FTSParser extends Parser {
case MINUS:
case LPAREN:
case RPAREN:
- case FTSWORD:
case PLUS:
case FTSPHRASE:
case TILDA:
+ case ID:
+ case FTSWORD:
{
alt16=1;
}
break;
- case DOTDOT:
- {
- alt16=6;
- }
- break;
default:
NoViableAltException nvae =
new NoViableAltException("", 16, 1, input);
@@ -2299,14 +2339,14 @@ public class FTSParser extends Parser {
switch (alt16) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:182:4: ftsFieldGroupTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:232:4: ftsFieldGroupTerm
{
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest779);
- ftsFieldGroupTerm53=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest770);
+ ftsFieldGroupTerm54=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm53.getTree());
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm54.getTree());
// AST REWRITE
@@ -2319,9 +2359,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 183:3: -> ^( FG_TERM ftsFieldGroupTerm )
+ // 233:3: -> ^( FG_TERM ftsFieldGroupTerm )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:183:6: ^( FG_TERM ftsFieldGroupTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:233:6: ^( FG_TERM ftsFieldGroupTerm )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_TERM, "FG_TERM"), root_1);
@@ -2337,14 +2377,14 @@ public class FTSParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:184:4: ftsFieldGroupExactTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:234:4: ftsFieldGroupExactTerm
{
- pushFollow(FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest794);
- ftsFieldGroupExactTerm54=ftsFieldGroupExactTerm();
+ pushFollow(FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest785);
+ ftsFieldGroupExactTerm55=ftsFieldGroupExactTerm();
state._fsp--;
- stream_ftsFieldGroupExactTerm.add(ftsFieldGroupExactTerm54.getTree());
+ stream_ftsFieldGroupExactTerm.add(ftsFieldGroupExactTerm55.getTree());
// AST REWRITE
@@ -2357,9 +2397,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 185:3: -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm )
+ // 235:3: -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:185:6: ^( FG_EXACT_TERM ftsFieldGroupExactTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:235:6: ^( FG_EXACT_TERM ftsFieldGroupExactTerm )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_EXACT_TERM, "FG_EXACT_TERM"), root_1);
@@ -2375,14 +2415,14 @@ public class FTSParser extends Parser {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:186:4: ftsFieldGroupPhrase
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:236:4: ftsFieldGroupPhrase
{
- pushFollow(FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest810);
- ftsFieldGroupPhrase55=ftsFieldGroupPhrase();
+ pushFollow(FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest801);
+ ftsFieldGroupPhrase56=ftsFieldGroupPhrase();
state._fsp--;
- stream_ftsFieldGroupPhrase.add(ftsFieldGroupPhrase55.getTree());
+ stream_ftsFieldGroupPhrase.add(ftsFieldGroupPhrase56.getTree());
// AST REWRITE
@@ -2395,9 +2435,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 187:3: -> ^( FG_PHRASE ftsFieldGroupPhrase )
+ // 237:3: -> ^( FG_PHRASE ftsFieldGroupPhrase )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:187:6: ^( FG_PHRASE ftsFieldGroupPhrase )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:237:6: ^( FG_PHRASE ftsFieldGroupPhrase )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PHRASE, "FG_PHRASE"), root_1);
@@ -2413,14 +2453,14 @@ public class FTSParser extends Parser {
}
break;
case 4 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:188:4: ftsFieldGroupSynonym
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:238:4: ftsFieldGroupSynonym
{
- pushFollow(FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest825);
- ftsFieldGroupSynonym56=ftsFieldGroupSynonym();
+ pushFollow(FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest816);
+ ftsFieldGroupSynonym57=ftsFieldGroupSynonym();
state._fsp--;
- stream_ftsFieldGroupSynonym.add(ftsFieldGroupSynonym56.getTree());
+ stream_ftsFieldGroupSynonym.add(ftsFieldGroupSynonym57.getTree());
// AST REWRITE
@@ -2433,9 +2473,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 189:3: -> ^( FG_SYNONYM ftsFieldGroupSynonym )
+ // 239:3: -> ^( FG_SYNONYM ftsFieldGroupSynonym )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:189:6: ^( FG_SYNONYM ftsFieldGroupSynonym )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:239:6: ^( FG_SYNONYM ftsFieldGroupSynonym )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_SYNONYM, "FG_SYNONYM"), root_1);
@@ -2451,14 +2491,14 @@ public class FTSParser extends Parser {
}
break;
case 5 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:190:10: ftsFieldGroupProximity
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:240:6: ftsFieldGroupProximity
{
- pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest846);
- ftsFieldGroupProximity57=ftsFieldGroupProximity();
+ pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest833);
+ ftsFieldGroupProximity58=ftsFieldGroupProximity();
state._fsp--;
- stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity57.getTree());
+ stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity58.getTree());
// AST REWRITE
@@ -2471,9 +2511,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 191:3: -> ^( FG_PROXIMITY ftsFieldGroupProximity )
+ // 241:3: -> ^( FG_PROXIMITY ftsFieldGroupProximity )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:191:6: ^( FG_PROXIMITY ftsFieldGroupProximity )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:241:6: ^( FG_PROXIMITY ftsFieldGroupProximity )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PROXIMITY, "FG_PROXIMITY"), root_1);
@@ -2489,14 +2529,14 @@ public class FTSParser extends Parser {
}
break;
case 6 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:192:12: ftsFieldGroupRange
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:242:8: ftsFieldGroupRange
{
- pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest871);
- ftsFieldGroupRange58=ftsFieldGroupRange();
+ pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest854);
+ ftsFieldGroupRange59=ftsFieldGroupRange();
state._fsp--;
- stream_ftsFieldGroupRange.add(ftsFieldGroupRange58.getTree());
+ stream_ftsFieldGroupRange.add(ftsFieldGroupRange59.getTree());
// AST REWRITE
@@ -2509,9 +2549,9 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 193:10: -> ^( FG_RANGE ftsFieldGroupRange )
+ // 243:9: -> ^( FG_RANGE ftsFieldGroupRange )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:193:13: ^( FG_RANGE ftsFieldGroupRange )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:243:12: ^( FG_RANGE ftsFieldGroupRange )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_RANGE, "FG_RANGE"), root_1);
@@ -2527,19 +2567,19 @@ public class FTSParser extends Parser {
}
break;
case 7 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:194:4: LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:244:4: LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN
{
- LPAREN59=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroupTest893);
- stream_LPAREN.add(LPAREN59);
+ LPAREN60=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroupTest875);
+ stream_LPAREN.add(LPAREN60);
- pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest895);
- ftsFieldGroupImplicitConjunctionOrDisjunction60=ftsFieldGroupImplicitConjunctionOrDisjunction();
+ pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest877);
+ ftsFieldGroupImplicitConjunctionOrDisjunction61=ftsFieldGroupImplicitConjunctionOrDisjunction();
state._fsp--;
- stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction60.getTree());
- RPAREN61=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroupTest897);
- stream_RPAREN.add(RPAREN61);
+ stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction61.getTree());
+ RPAREN62=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroupTest879);
+ stream_RPAREN.add(RPAREN62);
@@ -2553,7 +2593,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 195:3: -> ftsFieldGroupImplicitConjunctionOrDisjunction
+ // 245:3: -> ftsFieldGroupImplicitConjunctionOrDisjunction
{
adaptor.addChild(root_0, stream_ftsFieldGroupImplicitConjunctionOrDisjunction.nextTree());
@@ -2570,11 +2610,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2588,27 +2627,29 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupTerm
- // W:\\workspace-cmis\\ANTLR\\FTS.g:198:1: ftsFieldGroupTerm : FTSWORD ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:248:1: ftsFieldGroupTerm : ftsWord ;
public final FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm() throws RecognitionException {
FTSParser.ftsFieldGroupTerm_return retval = new FTSParser.ftsFieldGroupTerm_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token FTSWORD62=null;
+ FTSParser.ftsWord_return ftsWord63 = null;
+
- Object FTSWORD62_tree=null;
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:199:2: ( FTSWORD )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:199:4: FTSWORD
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:249:2: ( ftsWord )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:249:4: ftsWord
{
root_0 = (Object)adaptor.nil();
- FTSWORD62=(Token)match(input,FTSWORD,FOLLOW_FTSWORD_in_ftsFieldGroupTerm915);
- FTSWORD62_tree = (Object)adaptor.create(FTSWORD62);
- adaptor.addChild(root_0, FTSWORD62_tree);
+ pushFollow(FOLLOW_ftsWord_in_ftsFieldGroupTerm897);
+ ftsWord63=ftsWord();
+ state._fsp--;
+
+ adaptor.addChild(root_0, ftsWord63.getTree());
}
@@ -2618,11 +2659,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2636,33 +2676,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupExactTerm
- // W:\\workspace-cmis\\ANTLR\\FTS.g:202:1: ftsFieldGroupExactTerm : PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:252:1: ftsFieldGroupExactTerm : PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm ;
public final FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm() throws RecognitionException {
FTSParser.ftsFieldGroupExactTerm_return retval = new FTSParser.ftsFieldGroupExactTerm_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token PLUS63=null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm64 = null;
+ Token PLUS64=null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm65 = null;
- Object PLUS63_tree=null;
+ Object PLUS64_tree=null;
RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS");
RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:203:2: ( PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:203:4: PLUS ftsFieldGroupTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:253:2: ( PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:253:4: PLUS ftsFieldGroupTerm
{
- PLUS63=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsFieldGroupExactTerm927);
- stream_PLUS.add(PLUS63);
+ PLUS64=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsFieldGroupExactTerm909);
+ stream_PLUS.add(PLUS64);
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm929);
- ftsFieldGroupTerm64=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm911);
+ ftsFieldGroupTerm65=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm64.getTree());
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm65.getTree());
// AST REWRITE
@@ -2675,7 +2715,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 204:3: -> ftsFieldGroupTerm
+ // 254:3: -> ftsFieldGroupTerm
{
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
@@ -2690,11 +2730,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2708,26 +2747,26 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupPhrase
- // W:\\workspace-cmis\\ANTLR\\FTS.g:207:1: ftsFieldGroupPhrase : FTSPHRASE ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:257:1: ftsFieldGroupPhrase : FTSPHRASE ;
public final FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase() throws RecognitionException {
FTSParser.ftsFieldGroupPhrase_return retval = new FTSParser.ftsFieldGroupPhrase_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token FTSPHRASE65=null;
+ Token FTSPHRASE66=null;
- Object FTSPHRASE65_tree=null;
+ Object FTSPHRASE66_tree=null;
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:208:2: ( FTSPHRASE )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:208:6: FTSPHRASE
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:258:2: ( FTSPHRASE )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:258:6: FTSPHRASE
{
root_0 = (Object)adaptor.nil();
- FTSPHRASE65=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase949);
- FTSPHRASE65_tree = (Object)adaptor.create(FTSPHRASE65);
- adaptor.addChild(root_0, FTSPHRASE65_tree);
+ FTSPHRASE66=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase931);
+ FTSPHRASE66_tree = (Object)adaptor.create(FTSPHRASE66);
+ adaptor.addChild(root_0, FTSPHRASE66_tree);
}
@@ -2738,11 +2777,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2756,33 +2794,33 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupSynonym
- // W:\\workspace-cmis\\ANTLR\\FTS.g:211:1: ftsFieldGroupSynonym : TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:261:1: ftsFieldGroupSynonym : TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ;
public final FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym() throws RecognitionException {
FTSParser.ftsFieldGroupSynonym_return retval = new FTSParser.ftsFieldGroupSynonym_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token TILDA66=null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm67 = null;
+ Token TILDA67=null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm68 = null;
- Object TILDA66_tree=null;
+ Object TILDA67_tree=null;
RewriteRuleTokenStream stream_TILDA=new RewriteRuleTokenStream(adaptor,"token TILDA");
RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:212:2: ( TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:212:4: TILDA ftsFieldGroupTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:262:2: ( TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:262:4: TILDA ftsFieldGroupTerm
{
- TILDA66=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsFieldGroupSynonym961);
- stream_TILDA.add(TILDA66);
+ TILDA67=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsFieldGroupSynonym943);
+ stream_TILDA.add(TILDA67);
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym963);
- ftsFieldGroupTerm67=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym945);
+ ftsFieldGroupTerm68=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm67.getTree());
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm68.getTree());
// AST REWRITE
@@ -2795,7 +2833,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 213:3: -> ftsFieldGroupTerm
+ // 263:3: -> ftsFieldGroupTerm
{
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
@@ -2810,11 +2848,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2828,41 +2865,41 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupProximity
- // W:\\workspace-cmis\\ANTLR\\FTS.g:216:1: ftsFieldGroupProximity : ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:266:1: ftsFieldGroupProximity : ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ;
public final FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity() throws RecognitionException {
FTSParser.ftsFieldGroupProximity_return retval = new FTSParser.ftsFieldGroupProximity_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token STAR69=null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm68 = null;
+ Token STAR70=null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm69 = null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm70 = null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm71 = null;
- Object STAR69_tree=null;
+ Object STAR70_tree=null;
RewriteRuleTokenStream stream_STAR=new RewriteRuleTokenStream(adaptor,"token STAR");
RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:217:2: ( ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:217:4: ftsFieldGroupTerm STAR ftsFieldGroupTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:267:2: ( ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:267:4: ftsFieldGroupTerm STAR ftsFieldGroupTerm
{
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity981);
- ftsFieldGroupTerm68=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity963);
+ ftsFieldGroupTerm69=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm68.getTree());
- STAR69=(Token)match(input,STAR,FOLLOW_STAR_in_ftsFieldGroupProximity983);
- stream_STAR.add(STAR69);
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm69.getTree());
+ STAR70=(Token)match(input,STAR,FOLLOW_STAR_in_ftsFieldGroupProximity965);
+ stream_STAR.add(STAR70);
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity985);
- ftsFieldGroupTerm70=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity967);
+ ftsFieldGroupTerm71=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm70.getTree());
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm71.getTree());
// AST REWRITE
@@ -2875,7 +2912,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 218:3: -> ftsFieldGroupTerm ftsFieldGroupTerm
+ // 268:3: -> ftsFieldGroupTerm ftsFieldGroupTerm
{
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
@@ -2891,11 +2928,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2909,41 +2945,41 @@ public class FTSParser extends Parser {
};
// $ANTLR start ftsFieldGroupRange
- // W:\\workspace-cmis\\ANTLR\\FTS.g:221:1: ftsFieldGroupRange : ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:271:1: ftsFieldGroupRange : ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ;
public final FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange() throws RecognitionException {
FTSParser.ftsFieldGroupRange_return retval = new FTSParser.ftsFieldGroupRange_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token DOTDOT72=null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm71 = null;
+ Token DOTDOT73=null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm72 = null;
- FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm73 = null;
+ FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm74 = null;
- Object DOTDOT72_tree=null;
+ Object DOTDOT73_tree=null;
RewriteRuleTokenStream stream_DOTDOT=new RewriteRuleTokenStream(adaptor,"token DOTDOT");
RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:221:19: ( ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:221:21: ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:271:19: ( ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:271:21: ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm
{
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange1003);
- ftsFieldGroupTerm71=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange985);
+ ftsFieldGroupTerm72=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm71.getTree());
- DOTDOT72=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_ftsFieldGroupRange1005);
- stream_DOTDOT.add(DOTDOT72);
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm72.getTree());
+ DOTDOT73=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_ftsFieldGroupRange987);
+ stream_DOTDOT.add(DOTDOT73);
- pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange1007);
- ftsFieldGroupTerm73=ftsFieldGroupTerm();
+ pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange989);
+ ftsFieldGroupTerm74=ftsFieldGroupTerm();
state._fsp--;
- stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm73.getTree());
+ stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm74.getTree());
// AST REWRITE
@@ -2956,7 +2992,7 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 222:3: -> ftsFieldGroupTerm ftsFieldGroupTerm
+ // 272:3: -> ftsFieldGroupTerm ftsFieldGroupTerm
{
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree());
@@ -2972,11 +3008,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -2990,27 +3025,27 @@ public class FTSParser extends Parser {
};
// $ANTLR start columnReference
- // W:\\workspace-cmis\\ANTLR\\FTS.g:225:1: columnReference : (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:275:1: columnReference : (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ;
public final FTSParser.columnReference_return columnReference() throws RecognitionException {
FTSParser.columnReference_return retval = new FTSParser.columnReference_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token DOT74=null;
+ Token DOT75=null;
FTSParser.identifier_return qualifier = null;
FTSParser.identifier_return name = null;
- Object DOT74_tree=null;
+ Object DOT75_tree=null;
RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:226:2: ( (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:226:4: (qualifier= identifier DOT )? name= identifier
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:276:2: ( (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:276:4: (qualifier= identifier DOT )? name= identifier
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:226:4: (qualifier= identifier DOT )?
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:276:4: (qualifier= identifier DOT )?
int alt17=2;
int LA17_0 = input.LA(1);
@@ -3023,16 +3058,16 @@ public class FTSParser extends Parser {
}
switch (alt17) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\FTS.g:226:6: qualifier= identifier DOT
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:276:6: qualifier= identifier DOT
{
- pushFollow(FOLLOW_identifier_in_columnReference1031);
+ pushFollow(FOLLOW_identifier_in_columnReference1013);
qualifier=identifier();
state._fsp--;
stream_identifier.add(qualifier.getTree());
- DOT74=(Token)match(input,DOT,FOLLOW_DOT_in_columnReference1033);
- stream_DOT.add(DOT74);
+ DOT75=(Token)match(input,DOT,FOLLOW_DOT_in_columnReference1015);
+ stream_DOT.add(DOT75);
}
@@ -3040,7 +3075,7 @@ public class FTSParser extends Parser {
}
- pushFollow(FOLLOW_identifier_in_columnReference1040);
+ pushFollow(FOLLOW_identifier_in_columnReference1022);
name=identifier();
state._fsp--;
@@ -3060,15 +3095,15 @@ public class FTSParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"token qualifier",qualifier!=null?qualifier.tree:null);
root_0 = (Object)adaptor.nil();
- // 227:3: -> ^( COLUMN_REF $name ( $qualifier)? )
+ // 277:3: -> ^( COLUMN_REF $name ( $qualifier)? )
{
- // W:\\workspace-cmis\\ANTLR\\FTS.g:227:6: ^( COLUMN_REF $name ( $qualifier)? )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:277:6: ^( COLUMN_REF $name ( $qualifier)? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_REF, "COLUMN_REF"), root_1);
adaptor.addChild(root_1, stream_name.nextTree());
- // W:\\workspace-cmis\\ANTLR\\FTS.g:227:25: ( $qualifier)?
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:277:25: ( $qualifier)?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_1, stream_qualifier.nextTree());
@@ -3089,11 +3124,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -3107,26 +3141,26 @@ public class FTSParser extends Parser {
};
// $ANTLR start identifier
- // W:\\workspace-cmis\\ANTLR\\FTS.g:230:1: identifier : ID ;
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:280:1: identifier : ID ;
public final FTSParser.identifier_return identifier() throws RecognitionException {
FTSParser.identifier_return retval = new FTSParser.identifier_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token ID75=null;
+ Token ID76=null;
- Object ID75_tree=null;
+ Object ID76_tree=null;
try {
- // W:\\workspace-cmis\\ANTLR\\FTS.g:231:2: ( ID )
- // W:\\workspace-cmis\\ANTLR\\FTS.g:231:4: ID
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:281:2: ( ID )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:281:4: ID
{
root_0 = (Object)adaptor.nil();
- ID75=(Token)match(input,ID,FOLLOW_ID_in_identifier1067);
- ID75_tree = (Object)adaptor.create(ID75);
- adaptor.addChild(root_0, ID75_tree);
+ ID76=(Token)match(input,ID,FOLLOW_ID_in_identifier1050);
+ ID76_tree = (Object)adaptor.create(ID76);
+ adaptor.addChild(root_0, ID76_tree);
}
@@ -3137,11 +3171,10 @@ public class FTSParser extends Parser {
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
- catch (RecognitionException re) {
- reportError(re);
- recover(input,re);
- retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+ catch(RecognitionException e)
+ {
+ throw e;
}
finally {
}
@@ -3149,6 +3182,60 @@ public class FTSParser extends Parser {
}
// $ANTLR end identifier
+ public static class ftsWord_return extends ParserRuleReturnScope {
+ Object tree;
+ public Object getTree() { return tree; }
+ };
+
+ // $ANTLR start ftsWord
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:284:1: ftsWord : ( ID | FTSWORD );
+ public final FTSParser.ftsWord_return ftsWord() throws RecognitionException {
+ FTSParser.ftsWord_return retval = new FTSParser.ftsWord_return();
+ retval.start = input.LT(1);
+
+ Object root_0 = null;
+
+ Token set77=null;
+
+ Object set77_tree=null;
+
+ try {
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:285:5: ( ID | FTSWORD )
+ // W:\\workspace-cmis\\ANTLR\\FTS.g:
+ {
+ root_0 = (Object)adaptor.nil();
+
+ set77=(Token)input.LT(1);
+ if ( (input.LA(1)>=ID && input.LA(1)<=FTSWORD) ) {
+ input.consume();
+ adaptor.addChild(root_0, (Object)adaptor.create(set77));
+ state.errorRecovery=false;
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ throw mse;
+ }
+
+
+ }
+
+ retval.stop = input.LT(-1);
+
+ retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+ adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+ }
+
+ catch(RecognitionException e)
+ {
+ throw e;
+ }
+ finally {
+ }
+ return retval;
+ }
+ // $ANTLR end ftsWord
+
// Delegated rules
@@ -3167,7 +3254,7 @@ public class FTSParser extends Parser {
static final String DFA3_specialS =
"\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\2\uffff}>";
static final String[] DFA3_transitionS = {
- "\1\1\1\7\2\uffff\1\3\1\4\1\5\1\6\3\uffff\1\2",
+ "\1\1\1\7\2\uffff\1\4\1\5\1\6\3\uffff\1\2\1\3",
"\1\uffff",
"\1\uffff",
"\1\uffff",
@@ -3209,7 +3296,7 @@ public class FTSParser extends Parser {
this.transition = DFA3_transition;
}
public String getDescription() {
- return "89:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );";
+ return "137:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );";
}
public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
TokenStream input = (TokenStream)_input;
@@ -3330,30 +3417,30 @@ public class FTSParser extends Parser {
static final String DFA7_eotS =
"\16\uffff";
static final String DFA7_eofS =
- "\2\uffff\1\11\13\uffff";
+ "\1\uffff\2\13\13\uffff";
static final String DFA7_minS =
- "\1\32\1\34\1\27\4\uffff\1\44\1\32\3\uffff\1\34\1\uffff";
+ "\1\32\2\27\6\uffff\1\32\1\43\2\uffff\1\34";
static final String DFA7_maxS =
- "\1\44\1\43\1\44\4\uffff\1\44\1\37\3\uffff\1\34\1\uffff";
+ "\3\44\6\uffff\1\44\1\43\2\uffff\1\34";
static final String DFA7_acceptS =
- "\3\uffff\1\2\1\3\1\4\1\10\2\uffff\1\1\1\5\1\6\1\uffff\1\7";
+ "\3\uffff\1\2\1\3\1\4\1\10\1\6\1\5\2\uffff\1\1\1\7\1\uffff";
static final String DFA7_specialS =
"\16\uffff}>";
static final String[] DFA7_transitionS = {
- "\1\6\2\uffff\1\2\1\3\1\4\1\5\3\uffff\1\1",
- "\1\10\6\uffff\1\7",
- "\5\11\1\uffff\4\11\1\12\1\13\1\uffff\1\11",
+ "\1\6\2\uffff\1\3\1\4\1\5\3\uffff\1\1\1\2",
+ "\5\13\1\11\3\13\1\10\1\7\1\12\2\13",
+ "\5\13\1\uffff\3\13\1\10\1\7\1\uffff\2\13",
"",
"",
"",
"",
- "\1\14",
- "\1\15\2\uffff\1\11\1\uffff\1\4",
"",
"",
+ "\1\14\3\uffff\1\4\4\uffff\2\13",
+ "\1\15",
"",
- "\1\10",
- ""
+ "",
+ "\1\11"
};
static final short[] DFA7_eot = DFA.unpackEncodedString(DFA7_eotS);
@@ -3386,87 +3473,89 @@ public class FTSParser extends Parser {
this.transition = DFA7_transition;
}
public String getDescription() {
- return "113:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );";
+ return "162:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );";
}
}
- public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts135 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction157 = new BitSet(new long[]{0x00000011E6000000L});
- public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction160 = new BitSet(new long[]{0x00000011E6000002L});
- public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction179 = new BitSet(new long[]{0x00000011E6000000L});
- public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction182 = new BitSet(new long[]{0x00000011E6000002L});
- public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction207 = new BitSet(new long[]{0x0000000000800002L});
- public static final BitSet FOLLOW_OR_in_ftsExplicitDisjunction210 = new BitSet(new long[]{0x00000011E6800000L});
- public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction212 = new BitSet(new long[]{0x0000000000800002L});
- public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction237 = new BitSet(new long[]{0x0000000001000002L});
- public static final BitSet FOLLOW_AND_in_ftsExplictConjunction240 = new BitSet(new long[]{0x00000011E7000000L});
- public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction242 = new BitSet(new long[]{0x0000000001000002L});
- public static final BitSet FOLLOW_MINUS_in_ftsNot268 = new BitSet(new long[]{0x00000011E6000000L});
- public static final BitSet FOLLOW_ftsTest_in_ftsNot270 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsTest_in_ftsNot285 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsTerm_in_ftsTest301 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsExactTerm_in_ftsTest316 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsPhrase_in_ftsTest344 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsSynonym_in_ftsTest379 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsTest408 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsTest440 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroup_in_ftsTest469 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LPAREN_in_ftsTest478 = new BitSet(new long[]{0x00000011E6000000L});
- public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest480 = new BitSet(new long[]{0x0000000008000000L});
- public static final BitSet FOLLOW_RPAREN_in_ftsTest482 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_ftsTerm500 = new BitSet(new long[]{0x0000000010000000L});
- public static final BitSet FOLLOW_COLON_in_ftsTerm502 = new BitSet(new long[]{0x0000000020000000L});
- public static final BitSet FOLLOW_FTSWORD_in_ftsTerm506 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_PLUS_in_ftsExactTerm527 = new BitSet(new long[]{0x0000001020000000L});
- public static final BitSet FOLLOW_ftsTerm_in_ftsExactTerm529 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_ftsPhrase550 = new BitSet(new long[]{0x0000000010000000L});
- public static final BitSet FOLLOW_COLON_in_ftsPhrase552 = new BitSet(new long[]{0x0000000080000000L});
- public static final BitSet FOLLOW_FTSPHRASE_in_ftsPhrase556 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_TILDA_in_ftsSynonym577 = new BitSet(new long[]{0x0000001020000000L});
- public static final BitSet FOLLOW_ftsTerm_in_ftsSynonym579 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_ftsFieldGroup598 = new BitSet(new long[]{0x0000000010000000L});
- public static final BitSet FOLLOW_COLON_in_ftsFieldGroup600 = new BitSet(new long[]{0x0000000004000000L});
- public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroup602 = new BitSet(new long[]{0x00000001EE000000L});
- public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup604 = new BitSet(new long[]{0x0000000008000000L});
- public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroup606 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction632 = new BitSet(new long[]{0x00000001E6000000L});
- public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction635 = new BitSet(new long[]{0x00000001E6000002L});
- public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction653 = new BitSet(new long[]{0x00000001E6000000L});
- public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction656 = new BitSet(new long[]{0x00000001E6000002L});
- public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction681 = new BitSet(new long[]{0x0000000000800002L});
- public static final BitSet FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction684 = new BitSet(new long[]{0x00000001E6800000L});
- public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction686 = new BitSet(new long[]{0x0000000000800002L});
- public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction711 = new BitSet(new long[]{0x0000000001000002L});
- public static final BitSet FOLLOW_AND_in_ftsFieldGroupExplictConjunction714 = new BitSet(new long[]{0x00000001E7000000L});
- public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction716 = new BitSet(new long[]{0x0000000001000002L});
- public static final BitSet FOLLOW_MINUS_in_ftsFieldGroupNot743 = new BitSet(new long[]{0x00000001E6000000L});
- public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot745 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot760 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest779 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest794 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest810 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest825 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest846 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest871 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroupTest893 = new BitSet(new long[]{0x00000001EE000000L});
- public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest895 = new BitSet(new long[]{0x0000000008000000L});
- public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroupTest897 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FTSWORD_in_ftsFieldGroupTerm915 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_PLUS_in_ftsFieldGroupExactTerm927 = new BitSet(new long[]{0x0000000020000000L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm929 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase949 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_TILDA_in_ftsFieldGroupSynonym961 = new BitSet(new long[]{0x0000000020000000L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym963 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity981 = new BitSet(new long[]{0x0000000200000000L});
- public static final BitSet FOLLOW_STAR_in_ftsFieldGroupProximity983 = new BitSet(new long[]{0x0000000020000000L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity985 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange1003 = new BitSet(new long[]{0x0000000400000000L});
- public static final BitSet FOLLOW_DOTDOT_in_ftsFieldGroupRange1005 = new BitSet(new long[]{0x0000000020000000L});
- public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange1007 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_columnReference1031 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_DOT_in_columnReference1033 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_identifier_in_columnReference1040 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ID_in_identifier1067 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts146 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_fts148 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction170 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction173 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction192 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction195 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction220 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_OR_in_ftsExplicitDisjunction223 = new BitSet(new long[]{0x00000018E6800000L});
+ public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction225 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction250 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_AND_in_ftsExplictConjunction253 = new BitSet(new long[]{0x00000018E7000000L});
+ public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction255 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_MINUS_in_ftsNot286 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsTest_in_ftsNot288 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsTest_in_ftsNot303 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsTerm_in_ftsTest324 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsExactTerm_in_ftsTest339 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsPhrase_in_ftsTest359 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsSynonym_in_ftsTest385 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsTest409 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsTest436 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroup_in_ftsTest460 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_ftsTest469 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest471 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_RPAREN_in_ftsTest473 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_ftsTerm491 = new BitSet(new long[]{0x0000000010000000L});
+ public static final BitSet FOLLOW_COLON_in_ftsTerm493 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsWord_in_ftsTerm497 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_PLUS_in_ftsExactTerm518 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsTerm_in_ftsExactTerm520 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_ftsPhrase541 = new BitSet(new long[]{0x0000000010000000L});
+ public static final BitSet FOLLOW_COLON_in_ftsPhrase543 = new BitSet(new long[]{0x0000000040000000L});
+ public static final BitSet FOLLOW_FTSPHRASE_in_ftsPhrase547 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_TILDA_in_ftsSynonym568 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsTerm_in_ftsSynonym570 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_ftsFieldGroup589 = new BitSet(new long[]{0x0000000010000000L});
+ public static final BitSet FOLLOW_COLON_in_ftsFieldGroup591 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroup593 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup595 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroup597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction623 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction626 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction644 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction647 = new BitSet(new long[]{0x00000018E6000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction672 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction675 = new BitSet(new long[]{0x00000018E6800000L});
+ public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction677 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction702 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_AND_in_ftsFieldGroupExplictConjunction705 = new BitSet(new long[]{0x00000018E7000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction707 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_MINUS_in_ftsFieldGroupNot734 = new BitSet(new long[]{0x00000018E6000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot736 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot751 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest770 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest785 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest801 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest816 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest833 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest854 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroupTest875 = new BitSet(new long[]{0x00000018EE000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest877 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroupTest879 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsWord_in_ftsFieldGroupTerm897 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_PLUS_in_ftsFieldGroupExactTerm909 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm911 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase931 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_TILDA_in_ftsFieldGroupSynonym943 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym945 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity963 = new BitSet(new long[]{0x0000000100000000L});
+ public static final BitSet FOLLOW_STAR_in_ftsFieldGroupProximity965 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity967 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange985 = new BitSet(new long[]{0x0000000200000000L});
+ public static final BitSet FOLLOW_DOTDOT_in_ftsFieldGroupRange987 = new BitSet(new long[]{0x0000001800000000L});
+ public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange989 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_columnReference1013 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_DOT_in_columnReference1015 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_identifier_in_columnReference1022 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ID_in_identifier1050 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_set_in_ftsWord0 = new BitSet(new long[]{0x0000000000000002L});
}
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/Function.java b/source/java/org/alfresco/repo/search/impl/querymodel/Function.java
index 1aade95cda..42e0bb2f0d 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/Function.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/Function.java
@@ -62,5 +62,12 @@ public interface Function
* @return
*/
public LinkedHashSet getArgumentDefinitions();
+
+
+ /**
+ * Get the argument Definition
+ * @return
+ */
+ public ArgumentDefinition getArgumentDefinition(String name);
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/ListArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/ListArgument.java
new file mode 100644
index 0000000000..038579a989
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/ListArgument.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel;
+
+import java.util.List;
+
+/**
+ * @author andyh
+ *
+ */
+public interface ListArgument extends StaticArgument
+{
+ public List getArguments();
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/Ordering.java b/source/java/org/alfresco/repo/search/impl/querymodel/Ordering.java
index 2cfd9726c6..f89a0d9286 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/Ordering.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/Ordering.java
@@ -30,7 +30,7 @@ package org.alfresco.repo.search.impl.querymodel;
*/
public interface Ordering
{
- public DynamicArgument getArgument();
+ public Column getColumn();
public Order getOrder();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java b/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
index 7d478307db..c7256f87a1 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
@@ -25,6 +25,7 @@
package org.alfresco.repo.search.impl.querymodel;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.List;
import org.alfresco.service.namespace.QName;
@@ -52,7 +53,7 @@ public interface QueryModelFactory
public LiteralArgument createLiteralArgument(String name, QName type, Serializable value);
- public Ordering createOrdering(DynamicArgument argument, Order order);
+ public Ordering createOrdering(Column column, Order order);
public ParameterArgument createParameterArgument(String name, String parameterName);
@@ -61,4 +62,6 @@ public interface QueryModelFactory
public SelectorArgument createSelectorArgument(String name, String selectorAlias);
public Function getFunction(String functionName);
+
+ public ListArgument createListArgument(String name, ArrayList arguments);
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseComparison.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseComparison.java
new file mode 100644
index 0000000000..27b5683fa6
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseComparison.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.util.LinkedHashSet;
+
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+import org.alfresco.service.namespace.QName;
+
+/**
+ * @author andyh
+ */
+public abstract class BaseComparison extends BaseFunction
+{
+ public final static String ARG_LHS = "LHS";
+
+ public final static String ARG_RHS = "RHS";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_LHS, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_RHS, DataTypeDefinition.ANY, true));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public BaseComparison(String name, QName returnType, LinkedHashSet argumentDefinitions)
+ {
+ super(name, returnType, argumentDefinitions);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseConjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseConjunction.java
new file mode 100644
index 0000000000..d516a20dc0
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseConjunction.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Conjunction;
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseConjunction implements Conjunction
+{
+
+ private List constraints;
+
+ public BaseConjunction(List constraints)
+ {
+ this.constraints = constraints;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Conjunction#getConstraints()
+ */
+ public List getConstraints()
+ {
+ return constraints;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Constraint#evaluate()
+ */
+ public boolean evaluate()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseConjunction[");
+ builder.append("constraints=").append(getConstraints());
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseDisjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseDisjunction.java
new file mode 100644
index 0000000000..3ed66039c8
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseDisjunction.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.Disjunction;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseDisjunction implements Disjunction
+{
+ private List constraints;
+
+ public BaseDisjunction(List constraints)
+ {
+ this.constraints = constraints;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Disjunction#getConstraints()
+ */
+ public List getConstraints()
+ {
+ return constraints;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Constraint#evaluate()
+ */
+ public boolean evaluate()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseDisjunction[");
+ builder.append("constraints=").append(getConstraints());
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunction.java
index 4d102cfa24..43d11a4a8c 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunction.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunction.java
@@ -78,15 +78,26 @@ public abstract class BaseFunction implements Function
{
return returnType;
}
-
-
+
+ public ArgumentDefinition getArgumentDefinition(String name)
+ {
+ for (ArgumentDefinition def : getArgumentDefinitions())
+ {
+ if (def.getName().equals(name))
+ {
+ return def;
+ }
+ }
+ throw new IllegalArgumentException(name);
+ }
+
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("BaseFunction[");
- builder.append("Name="+getName()).append(", ");
- builder.append("Return type="+getReturnType()).append(", ");
- builder.append("ArgumentDefinitions="+getArgumentDefinitions());
+ builder.append("Name=" + getName()).append(", ");
+ builder.append("Return type=" + getReturnType()).append(", ");
+ builder.append("ArgumentDefinitions=" + getArgumentDefinitions());
builder.append("]");
return builder.toString();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseListArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseListArgument.java
new file mode 100644
index 0000000000..bcbea8f1d3
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseListArgument.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ListArgument;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseListArgument extends BaseStaticArgument implements ListArgument
+{
+ private List arguments;
+
+ /**
+ * @param name
+ */
+ public BaseListArgument(String name, List arguments)
+ {
+ super(name);
+ this.arguments = arguments;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.ListArgument#getArguments()
+ */
+ public List getArguments()
+ {
+ return arguments;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
+ */
+ public Serializable getValue()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseListArgument[");
+ builder.append("name=").append(getName()).append(", ");
+ builder.append("values=").append(getArguments());
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseNegation.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseNegation.java
new file mode 100644
index 0000000000..cec78b67eb
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseNegation.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.Negation;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseNegation implements Negation
+{
+ private Constraint constraint;
+
+ public BaseNegation(Constraint constraint)
+ {
+ this.constraint = constraint;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Negation#getConstraint()
+ */
+ public Constraint getConstraint()
+ {
+ return constraint;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Constraint#evaluate()
+ */
+ public boolean evaluate()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseNegation[");
+ builder.append("constraint=").append(getConstraint());
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseOrdering.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseOrdering.java
new file mode 100644
index 0000000000..22554aa829
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseOrdering.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import org.alfresco.repo.search.impl.querymodel.Column;
+import org.alfresco.repo.search.impl.querymodel.Order;
+import org.alfresco.repo.search.impl.querymodel.Ordering;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseOrdering implements Ordering
+{
+ private Column column;
+
+ private Order order;
+
+ public BaseOrdering(Column column, Order order)
+ {
+ this.column = column;
+ this.order = order;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Ordering#getColumn()
+ */
+ public Column getColumn()
+ {
+ return column;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Ordering#getOrder()
+ */
+ public Order getOrder()
+ {
+ return order;
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseOrdering[");
+ builder.append("Column=" + getColumn()).append(", ");
+ builder.append("Order=" + getOrder());
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseQuery.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseQuery.java
new file mode 100644
index 0000000000..7ac6a949a5
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseQuery.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Column;
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.Ordering;
+import org.alfresco.repo.search.impl.querymodel.Query;
+import org.alfresco.repo.search.impl.querymodel.Source;
+
+/**
+ * @author andyh
+ */
+public class BaseQuery implements Query
+{
+ private Source source;
+
+ private List columns;
+
+ private Constraint constraint;
+
+ private List orderings;
+
+ public BaseQuery(List columns, Source source, Constraint constraint, List orderings)
+ {
+ this.columns = columns;
+ this.source = source;
+ this.constraint = constraint;
+ this.orderings = orderings;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Query#getColumns()
+ */
+ public List getColumns()
+ {
+ return columns;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Query#getConstraint()
+ */
+ public Constraint getConstraint()
+ {
+ return constraint;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Query#getOrderings()
+ */
+ public List getOrderings()
+ {
+ return orderings;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Query#getSource()
+ */
+ public Source getSource()
+ {
+ return source;
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseQuery[\n");
+ builder.append("\tcolumns=").append(getColumns()).append("\n");
+ builder.append("\tsource=").append(getSource()).append("\n");
+ builder.append("\tconstraint=").append(getConstraint()).append("\n");
+ builder.append("\torderings=").append(getOrderings()).append("\n");
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Child.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Child.java
new file mode 100644
index 0000000000..5d061d52d2
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Child.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ */
+public class Child extends BaseFunction
+{
+ public final static String NAME = "Child";
+
+ public final static String ARG_PARENT = "Parent";
+
+ public final static String ARG_SELECTOR = "Selector";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PARENT, DataTypeDefinition.TEXT, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_SELECTOR, DataTypeDefinition.TEXT, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public Child()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Descendant.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Descendant.java
new file mode 100644
index 0000000000..9b47c28323
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Descendant.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ */
+public class Descendant extends BaseFunction
+{
+ public final static String NAME = "Descendant";
+
+ public final static String ARG_ANCESTOR = "Ancestor";
+
+ public final static String ARG_SELECTOR = "Selector";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_ANCESTOR, DataTypeDefinition.TEXT, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_SELECTOR, DataTypeDefinition.TEXT, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public Descendant()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Equals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Equals.java
index ac2a73f276..65a201317a 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Equals.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Equals.java
@@ -25,37 +25,20 @@
package org.alfresco.repo.search.impl.querymodel.impl.functions;
import java.io.Serializable;
-import java.util.LinkedHashSet;
import java.util.Set;
import org.alfresco.repo.search.impl.querymodel.Argument;
-import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
-import org.alfresco.repo.search.impl.querymodel.Multiplicity;
-import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
-import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
/**
* @author andyh
*
*/
-public class Equals extends BaseFunction
+public class Equals extends BaseComparison
{
public final static String NAME = "Equals";
- public final static String ARG_LHS = "LHS";
-
- public final static String ARG_RHS = "RHS";
-
- public static LinkedHashSet args;
-
- static
- {
- args = new LinkedHashSet();
- args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_LHS, DataTypeDefinition.ANY, true));
- args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_RHS, DataTypeDefinition.ANY, true));
- }
-
/**
* @param name
* @param returnType
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Exists.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Exists.java
new file mode 100644
index 0000000000..1fb3059ed5
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Exists.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ */
+public class Exists extends BaseFunction
+{
+ public final static String NAME = "Exists";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public final static String ARG_NOT = "Not";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PROPERTY, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_NOT, DataTypeDefinition.BOOLEAN, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public Exists()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSExactTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSExactTerm.java
new file mode 100644
index 0000000000..43de269f9d
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSExactTerm.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class FTSExactTerm extends BaseFunction
+{
+ public final static String NAME = "FTSExactTerm";
+
+ public final static String ARG_TERM = "Term";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_TERM, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PROPERTY, DataTypeDefinition.ANY, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public FTSExactTerm()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSPhrase.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSPhrase.java
new file mode 100644
index 0000000000..9437bff248
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSPhrase.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ */
+public class FTSPhrase extends BaseFunction
+{
+ public final static String NAME = "FTSPhrase";
+
+ public final static String ARG_PHRASE = "Phrase";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PHRASE, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PROPERTY, DataTypeDefinition.ANY, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public FTSPhrase()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSTerm.java
new file mode 100644
index 0000000000..469af95a14
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/FTSTerm.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class FTSTerm extends BaseFunction
+{
+ public final static String NAME = "FTSTerm";
+
+ public final static String ARG_TERM = "Term";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_TERM, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PROPERTY, DataTypeDefinition.ANY, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public FTSTerm()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThan.java
new file mode 100644
index 0000000000..f3c56317d1
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThan.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class GreaterThan extends BaseComparison
+{
+ public final static String NAME = "GreaterThan";
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public GreaterThan()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThanOrEquals.java
new file mode 100644
index 0000000000..97d3bca1ef
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/GreaterThanOrEquals.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class GreaterThanOrEquals extends BaseComparison
+{
+ public final static String NAME = "GreaterThanOrEquals";
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public GreaterThanOrEquals()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/In.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/In.java
new file mode 100644
index 0000000000..18adcd10bf
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/In.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class In extends BaseFunction
+{
+ public final static String NAME = "In";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public final static String ARG_COLLECTION = "Collection";
+
+ public final static String ARG_NOT = "Not";
+
+ public final static String ARG_MODE = "Mode";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_MODE, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_PROPERTY, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_COLLECTION, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_NOT, DataTypeDefinition.ANY, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public In()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThan.java
new file mode 100644
index 0000000000..280e664078
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThan.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class LessThan extends BaseComparison
+{
+ public final static String NAME = "LessThan";
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public LessThan()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThanOrEquals.java
new file mode 100644
index 0000000000..2c4ed5aaa4
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/LessThanOrEquals.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class LessThanOrEquals extends BaseComparison
+{
+ public final static String NAME = "LessThanOrEquals";
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public LessThanOrEquals()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Like.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Like.java
new file mode 100644
index 0000000000..fc7c669b25
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Like.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunction;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class Like extends BaseFunction
+{
+ public final static String NAME = "Like";
+
+ public final static String ARG_PROPERTY = "Property";
+
+ public final static String ARG_EXP = "Exp";
+
+ public final static String ARG_NOT = "Not";
+
+ public static LinkedHashSet args;
+
+ static
+ {
+ args = new LinkedHashSet();
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_PROPERTY, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_EXP, DataTypeDefinition.TEXT, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.ANY, ARG_NOT, DataTypeDefinition.BOOLEAN, false));
+ }
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public Like()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/NotEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/NotEquals.java
new file mode 100644
index 0000000000..1658b45309
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/NotEquals.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.functions;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+
+/**
+ * @author andyh
+ *
+ */
+public class NotEquals extends BaseComparison
+{
+ public final static String NAME = "NotEquals";
+
+ /**
+ * @param name
+ * @param returnType
+ * @param argumentDefinitions
+ */
+ public NotEquals()
+ {
+ super(NAME, DataTypeDefinition.BOOLEAN, args);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Function#getValue(java.util.Set)
+ */
+ public Serializable getValue(Set args)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/PropertyAccessor.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/PropertyAccessor.java
index cf62303a75..5d26d2cac5 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/PropertyAccessor.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/PropertyAccessor.java
@@ -40,9 +40,9 @@ import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
*/
public class PropertyAccessor extends BaseFunction
{
- public final static String NAME = "Upper";
+ public final static String NAME = "PropertyAccessor";
- public final static String ARG_PROPERTY = "Arg";
+ public final static String ARG_PROPERTY = "Property";
public static LinkedHashSet args;
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Score.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Score.java
index 2d0e9896f9..119d0d6394 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Score.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Score.java
@@ -42,14 +42,14 @@ public class Score extends BaseFunction
{
public final static String NAME = "Score";
- public final static String ARG_PROPERTY = "Qualifier";
+ public final static String ARG_QUALIFIER = "Qualifier";
public static LinkedHashSet args;
static
{
args = new LinkedHashSet();
- args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_PROPERTY, DataTypeDefinition.ANY, true));
+ args.add(new BaseArgumentDefinition(Multiplicity.SINGLE_VALUED, ARG_QUALIFIER, DataTypeDefinition.ANY, true));
}
/**
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Upper.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Upper.java
index 0347ca3465..fc86042c22 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Upper.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Upper.java
@@ -42,7 +42,7 @@ public class Upper extends BaseFunction
{
public final static String NAME = "Upper";
- public final static String ARG_PROPERTY = "Arg";
+ public final static String ARG_PROPERTY = "Property";
public static LinkedHashSet args;
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneConjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneConjunction.java
new file mode 100644
index 0000000000..ea2c03fc63
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneConjunction.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseConjunction;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneConjunction extends BaseConjunction
+{
+
+ /**
+ * @param constraints
+ */
+ public LuceneConjunction(List constraints)
+ {
+ super(constraints);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java
new file mode 100644
index 0000000000..f3856e5b46
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneDisjunction.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseDisjunction;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneDisjunction extends BaseDisjunction
+{
+
+ /**
+ * @param constraints
+ */
+ public LuceneDisjunction(List constraints)
+ {
+ super(constraints);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneListArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneListArgument.java
new file mode 100644
index 0000000000..b16ef026a5
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneListArgument.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseListArgument;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneListArgument extends BaseListArgument
+{
+
+ /**
+ * @param name
+ * @param arguments
+ */
+ public LuceneListArgument(String name, List arguments)
+ {
+ super(name, arguments);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneNegation.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneNegation.java
new file mode 100644
index 0000000000..e337dafef3
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneNegation.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseNegation;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneNegation extends BaseNegation
+{
+
+ /**
+ * @param constraint
+ */
+ public LuceneNegation(Constraint constraint)
+ {
+ super(constraint);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneOrdering.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneOrdering.java
new file mode 100644
index 0000000000..97aa09b92d
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneOrdering.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import org.alfresco.repo.search.impl.querymodel.Column;
+import org.alfresco.repo.search.impl.querymodel.Order;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseOrdering;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneOrdering extends BaseOrdering
+{
+
+ /**
+ * @param column
+ * @param order
+ */
+ public LuceneOrdering(Column column, Order order)
+ {
+ super(column, order);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java
new file mode 100644
index 0000000000..12adefdd02
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Column;
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.Ordering;
+import org.alfresco.repo.search.impl.querymodel.Source;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseQuery;
+
+/**
+ * @author andyh
+ */
+public class LuceneQuery extends BaseQuery
+{
+
+ /**
+ * @param columns
+ * @param source
+ * @param constraint
+ * @param orderings
+ */
+ public LuceneQuery(List columns, Source source, Constraint constraint, List orderings)
+ {
+ super(columns, source, constraint, orderings);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
index 4e50ee61de..b5089a2646 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
@@ -25,16 +25,17 @@
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Constraint;
-import org.alfresco.repo.search.impl.querymodel.DynamicArgument;
import org.alfresco.repo.search.impl.querymodel.Function;
import org.alfresco.repo.search.impl.querymodel.Join;
import org.alfresco.repo.search.impl.querymodel.JoinType;
+import org.alfresco.repo.search.impl.querymodel.ListArgument;
import org.alfresco.repo.search.impl.querymodel.LiteralArgument;
import org.alfresco.repo.search.impl.querymodel.Order;
import org.alfresco.repo.search.impl.querymodel.Ordering;
@@ -45,13 +46,39 @@ import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
import org.alfresco.repo.search.impl.querymodel.Selector;
import org.alfresco.repo.search.impl.querymodel.SelectorArgument;
import org.alfresco.repo.search.impl.querymodel.Source;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Equals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.In;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Like;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Lower;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.NotEquals;
import org.alfresco.repo.search.impl.querymodel.impl.functions.PropertyAccessor;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Score;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Upper;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneChild;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneDescendant;
import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneExists;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneFTSExactTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneFTSPhrase;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneFTSTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneGreaterThan;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneGreaterThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneIn;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneLessThan;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneLessThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneLike;
import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneLower;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneNotEquals;
import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LucenePropertyAccessor;
import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneScore;
import org.alfresco.repo.search.impl.querymodel.impl.lucene.functions.LuceneUpper;
@@ -59,12 +86,11 @@ import org.alfresco.service.namespace.QName;
/**
* @author andyh
- *
*/
public class LuceneQueryModelFactory implements QueryModelFactory
{
- public static HashMap functions = new HashMap ();
-
+ public static HashMap functions = new HashMap();
+
static
{
functions.put(Equals.NAME, new LuceneEquals());
@@ -72,126 +98,193 @@ public class LuceneQueryModelFactory implements QueryModelFactory
functions.put(Score.NAME, new LuceneScore());
functions.put(Upper.NAME, new LuceneUpper());
functions.put(Lower.NAME, new LuceneLower());
+
+ functions.put(NotEquals.NAME, new LuceneNotEquals());
+ functions.put(LessThan.NAME, new LuceneLessThan());
+ functions.put(LessThanOrEquals.NAME, new LuceneLessThanOrEquals());
+ functions.put(GreaterThan.NAME, new LuceneGreaterThan());
+ functions.put(GreaterThanOrEquals.NAME, new LuceneGreaterThanOrEquals());
+
+ functions.put(In.NAME, new LuceneIn());
+ functions.put(Like.NAME, new LuceneLike());
+ functions.put(Exists.NAME, new LuceneExists());
+
+ functions.put(Child.NAME, new LuceneChild());
+ functions.put(Descendant.NAME, new LuceneDescendant());
+
+ functions.put(FTSTerm.NAME, new LuceneFTSTerm());
+ functions.put(FTSExactTerm.NAME, new LuceneFTSExactTerm());
+ functions.put(FTSPhrase.NAME, new LuceneFTSPhrase());
+
+
}
-
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createColumn(org.alfresco.repo.search.impl.querymodel.Function, java.util.List, java.lang.String)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createColumn(org.alfresco.repo.search.impl.querymodel.Function,
+ * java.util.List, java.lang.String)
*/
public Column createColumn(Function function, List functionArguments, String alias)
{
return new LuceneColumn(function, functionArguments, alias);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createConjunction(java.util.List)
*/
public Constraint createConjunction(List constraints)
{
- throw new UnsupportedOperationException();
+ return new LuceneConjunction(constraints);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createDisjunction(java.util.List)
*/
public Constraint createDisjunction(List constraints)
{
- throw new UnsupportedOperationException();
+ return new LuceneDisjunction(constraints);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createFunctionalConstraint(org.alfresco.repo.search.impl.querymodel.Function, java.util.List)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createFunctionalConstraint(org.alfresco.repo.search.impl.querymodel.Function,
+ * java.util.List)
*/
public Constraint createFunctionalConstraint(Function function, List functionArguments)
{
return new LuceneFunctionalConstraint(function, functionArguments);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createJoin(org.alfresco.repo.search.impl.querymodel.Source, org.alfresco.repo.search.impl.querymodel.Source, org.alfresco.repo.search.impl.querymodel.JoinType, org.alfresco.repo.search.impl.querymodel.Constraint)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createJoin(org.alfresco.repo.search.impl.querymodel.Source,
+ * org.alfresco.repo.search.impl.querymodel.Source, org.alfresco.repo.search.impl.querymodel.JoinType,
+ * org.alfresco.repo.search.impl.querymodel.Constraint)
*/
public Join createJoin(Source left, Source right, JoinType joinType, Constraint joinCondition)
{
return new LuceneJoin(left, right, joinType, joinCondition);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createLiteralArgument(java.lang.String, org.alfresco.service.namespace.QName, java.io.Serializable)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createLiteralArgument(java.lang.String,
+ * org.alfresco.service.namespace.QName, java.io.Serializable)
*/
public LiteralArgument createLiteralArgument(String name, QName type, Serializable value)
{
return new LuceneLiteralArgument(name, type, value);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createNegation(org.alfresco.repo.search.impl.querymodel.Constraint)
*/
public Constraint createNegation(Constraint constraint)
{
- throw new UnsupportedOperationException();
+ return new LuceneNegation(constraint);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createOrdering(org.alfresco.repo.search.impl.querymodel.DynamicArgument, org.alfresco.repo.search.impl.querymodel.Order)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createOrdering(org.alfresco.repo.search.impl.querymodel.DynamicArgument,
+ * org.alfresco.repo.search.impl.querymodel.Order)
*/
- public Ordering createOrdering(DynamicArgument argument, Order order)
+ public Ordering createOrdering(Column column, Order order)
{
- throw new UnsupportedOperationException();
+ return new LuceneOrdering(column, order);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createParameterArgument(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createParameterArgument(java.lang.String,
+ * java.lang.String)
*/
public ParameterArgument createParameterArgument(String name, String parameterName)
{
return new LuceneParameterArgument(name, parameterName);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createPropertyArgument(java.lang.String, org.alfresco.service.namespace.QName)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createPropertyArgument(java.lang.String,
+ * org.alfresco.service.namespace.QName)
*/
public PropertyArgument createPropertyArgument(String name, String selector, QName propertyName)
{
return new LucenePropertyArgument(name, selector, propertyName);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createQuery(java.util.List, org.alfresco.repo.search.impl.querymodel.Source, org.alfresco.repo.search.impl.querymodel.Constraint, java.util.List)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createQuery(java.util.List,
+ * org.alfresco.repo.search.impl.querymodel.Source, org.alfresco.repo.search.impl.querymodel.Constraint,
+ * java.util.List)
*/
public Query createQuery(List columns, Source source, Constraint constraint, List orderings)
{
- throw new UnsupportedOperationException();
+ return new LuceneQuery(columns, source, constraint, orderings);
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createSelector(org.alfresco.service.namespace.QName, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createSelector(org.alfresco.service.namespace.QName,
+ * java.lang.String)
*/
public Selector createSelector(QName classQName, String alias)
{
return new LuceneSelector(classQName, alias);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#getFunction(java.lang.String)
*/
public Function getFunction(String functionName)
{
Function function = functions.get(functionName);
- if(function != null)
+ if (function != null)
{
return function;
}
else
{
- throw new UnsupportedOperationException("Missing function "+functionName);
+ throw new UnsupportedOperationException("Missing function " + functionName);
}
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createSelectorArgument(java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createSelectorArgument(java.lang.String,
+ * java.lang.String)
*/
public SelectorArgument createSelectorArgument(String name, String selectorAlias)
{
return new LuceneSelectorArgument(name, selectorAlias);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createListArgument(java.lang.String, java.util.ArrayList)
+ */
+ public ListArgument createListArgument(String name, ArrayList arguments)
+ {
+ return new LuceneListArgument(name, arguments);
+ }
+
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneChild.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneChild.java
new file mode 100644
index 0000000000..632e1850a6
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneChild.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneChild extends Child
+{
+
+ /**
+ *
+ */
+ public LuceneChild()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneDescendant.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneDescendant.java
new file mode 100644
index 0000000000..76ed7513de
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneDescendant.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneDescendant extends Descendant
+{
+
+ /**
+ *
+ */
+ public LuceneDescendant()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneExists.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneExists.java
new file mode 100644
index 0000000000..bf6af4e735
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneExists.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneExists extends Exists
+{
+
+ /**
+ *
+ */
+ public LuceneExists()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java
new file mode 100644
index 0000000000..f421931c21
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneFTSExactTerm extends FTSExactTerm
+{
+
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java
new file mode 100644
index 0000000000..120db76a6c
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneFTSPhrase extends FTSPhrase
+{
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java
new file mode 100644
index 0000000000..c6de5ad5d7
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneFTSTerm extends FTSTerm
+{
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThan.java
new file mode 100644
index 0000000000..0e40526377
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThan.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThan;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneGreaterThan extends GreaterThan
+{
+
+ /**
+ *
+ */
+ public LuceneGreaterThan()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThanOrEquals.java
new file mode 100644
index 0000000000..173be7d364
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneGreaterThanOrEquals.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThanOrEquals;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneGreaterThanOrEquals extends GreaterThanOrEquals
+{
+
+ /**
+ *
+ */
+ public LuceneGreaterThanOrEquals()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneIn.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneIn.java
new file mode 100644
index 0000000000..919946c09c
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneIn.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.In;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneIn extends In
+{
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThan.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThan.java
new file mode 100644
index 0000000000..a725eb6796
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThan.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThan;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneLessThan extends LessThan
+{
+
+ /**
+ *
+ */
+ public LuceneLessThan()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThanOrEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThanOrEquals.java
new file mode 100644
index 0000000000..251c1e1f64
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLessThanOrEquals.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThanOrEquals;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneLessThanOrEquals extends LessThanOrEquals
+{
+
+ /**
+ *
+ */
+ public LuceneLessThanOrEquals()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLike.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLike.java
new file mode 100644
index 0000000000..45d731d4d8
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneLike.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Like;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneLike extends Like
+{
+
+ /**
+ *
+ */
+ public LuceneLike()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneNotEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneNotEquals.java
new file mode 100644
index 0000000000..8eaf5350df
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneNotEquals.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+
+import org.alfresco.repo.search.impl.querymodel.impl.functions.NotEquals;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneNotEquals extends NotEquals
+{
+
+ /**
+ *
+ */
+ public LuceneNotEquals()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/source/java/org/alfresco/service/cmr/search/SearchParameters.java b/source/java/org/alfresco/service/cmr/search/SearchParameters.java
index ddc496082e..2782830fd9 100644
--- a/source/java/org/alfresco/service/cmr/search/SearchParameters.java
+++ b/source/java/org/alfresco/service/cmr/search/SearchParameters.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Set;
+import org.alfresco.repo.domain.hibernate.BulkLoader;
import org.alfresco.repo.search.MLAnalysisMode;
import org.alfresco.service.cmr.repository.Path;
import org.alfresco.service.cmr.repository.StoreRef;
@@ -48,6 +49,8 @@ public class SearchParameters extends SearchStatement
* The default limit if someone asks for a limited result set but does not say how to limit....
*/
private static int DEFAULT_LIMIT = 500;
+
+ private static int DEFAULT_BULK_FETCH_SIZE = 10;
/*
* Standard sort definitions for sorting in document and score order.
@@ -109,6 +112,10 @@ public class SearchParameters extends SearchStatement
private HashSet textAttributes = new HashSet();
+ private boolean bulkFetch = true;
+
+ private int bulkFetchSize = DEFAULT_BULK_FETCH_SIZE;
+
/**
* Default constructor
*/
@@ -411,7 +418,45 @@ public class SearchParameters extends SearchStatement
return Collections.unmodifiableSet(allAttributes);
}
+ /**
+ * Bulk fetch results in the cache
+ * @param bulkFetch
+ * @return
+ */
+ public void setBulkFetch(boolean bulkFetch)
+ {
+ this.bulkFetch = bulkFetch;
+ }
+
+ /**
+ * Do we bulk fect
+ * @return
+ */
+ public boolean getBulkFetch()
+ {
+ return bulkFetch;
+ }
+ /**
+ * Set the bulk fect size
+ * @param bulkFecthSize
+ */
+ public void setBulkFetchSize(int bulkFetchSize)
+ {
+ this.bulkFetchSize = bulkFetchSize;
+ }
+
+
+ /**
+ * Get the bulk fetch size.
+ * @return
+ */
+ public int getBulkFecthSize()
+ {
+ return bulkFetchSize;
+ }
+
+
/**
* A helper class for sort definition. Encapsulated using the lucene sortType, field name and a flag for
* ascending/descending.