diff --git a/.externalToolBuilders/JibX.launch b/.externalToolBuilders/JibX.launch
index 2e7c430e11..a5578dd881 100644
--- a/.externalToolBuilders/JibX.launch
+++ b/.externalToolBuilders/JibX.launch
@@ -1,24 +1,15 @@
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
@@ -28,9 +19,15 @@
+
+
+
+
+
+
+
-
-
-
-
+
+
+
diff --git a/config/alfresco/cmis-api-context.xml b/config/alfresco/cmis-api-context.xml
index 53dbc018ec..627ebe1cc4 100644
--- a/config/alfresco/cmis-api-context.xml
+++ b/config/alfresco/cmis-api-context.xml
@@ -36,6 +36,9 @@
+
+
+
@@ -86,6 +89,9 @@
+
+
+
diff --git a/config/alfresco/ehcache-default.xml b/config/alfresco/ehcache-default.xml
index 12c3f69b4e..61444af599 100644
--- a/config/alfresco/ehcache-default.xml
+++ b/config/alfresco/ehcache-default.xml
@@ -43,7 +43,7 @@
@@ -57,21 +57,21 @@
diff --git a/config/alfresco/model/cmisModel.xml b/config/alfresco/model/cmisModel.xml
index 081a8981bf..1d21a58d40 100644
--- a/config/alfresco/model/cmisModel.xml
+++ b/config/alfresco/model/cmisModel.xml
@@ -97,9 +97,7 @@
true
true
false
-
- true
-
+
Version Series Checked Out By
@@ -108,7 +106,7 @@
true
false
false
-
+
Version Series Checked Out Id
@@ -148,7 +146,7 @@
false
false
- true
+ false
@@ -230,9 +228,7 @@
true
true
false
-
- false
-
+
Target Id
@@ -241,9 +237,7 @@
true
true
false
-
- false
-
+
@@ -274,9 +268,7 @@
true
false
false
-
- false
-
+
Object Type Id
@@ -340,9 +332,7 @@
true
true
false
-
- false
-
+
diff --git a/source/java/org/alfresco/cmis/CMISService.java b/source/java/org/alfresco/cmis/CMISService.java
index e246bf004b..9d064cdf93 100644
--- a/source/java/org/alfresco/cmis/CMISService.java
+++ b/source/java/org/alfresco/cmis/CMISService.java
@@ -71,9 +71,10 @@ public class CMISService implements ApplicationContextAware, ApplicationListener
*/
public enum TypesFilter
{
+ Documents,
Folders,
- FoldersAndDocuments,
- Documents
+ Policies,
+ Any,
};
/** Query Parameters */
@@ -342,7 +343,7 @@ public class CMISService implements ApplicationContextAware, ApplicationListener
*/
public NodeRef[] getChildren(NodeRef parent, TypesFilter typesFilter)
{
- if (typesFilter == TypesFilter.FoldersAndDocuments)
+ if (typesFilter == TypesFilter.Any)
{
NodeRef[] folders = queryChildren(parent, TypesFilter.Folders);
NodeRef[] docs = queryChildren(parent, TypesFilter.Documents);
diff --git a/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java b/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
index 6ce49e3746..cb5ebf595e 100644
--- a/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
+++ b/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
@@ -31,6 +31,7 @@ import javax.transaction.UserTransaction;
import junit.framework.TestCase;
+import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.property.CMISPropertyService;
import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.repo.security.authentication.AuthenticationComponent;
@@ -42,6 +43,7 @@ import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
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.cmr.security.AuthenticationService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.transaction.TransactionService;
@@ -89,6 +91,10 @@ public abstract class BaseCMISTest extends TestCase
private MutableAuthenticationDao authenticationDAO;
+ protected CMISService cmisService;
+
+ protected SearchService searchService;
+
public void setUp() throws Exception
{
serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
@@ -97,6 +103,7 @@ public abstract class BaseCMISTest extends TestCase
cmisMapping = cmisDictionaryService.getCMISMapping();
cmisPropertyService = (CMISPropertyService) ctx.getBean("CMISPropertyService");
cmisQueryService = (CMISQueryService) ctx.getBean("CMISQueryService");
+ cmisService = (CMISService) ctx.getBean("CMISService");
dictionaryService = (DictionaryService) ctx.getBean("dictionaryService");
nodeService = (NodeService) ctx.getBean("nodeService");
fileFolderService = (FileFolderService) ctx.getBean("fileFolderService");
@@ -105,6 +112,8 @@ public abstract class BaseCMISTest extends TestCase
transactionService = (TransactionService) ctx.getBean("transactionComponent");
authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
+ searchService = (SearchService) ctx.getBean("searchService");
+
authenticationService = (AuthenticationService) ctx.getBean("authenticationService");
authenticationDAO = (MutableAuthenticationDao) ctx.getBean("authenticationDao");
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISMapping.java b/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
index 133dc617a1..caedc88c90 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
@@ -147,7 +147,7 @@ public class CMISMapping
public static String PROP_PARENT = "PARENT";
- public static String PROP_ALLLOWED_CHILD_OBJECT_TYPES = "ALLLOWED_CHILD_OBJECT_TYPES";
+ public static String PROP_ALLOWED_CHILD_OBJECT_TYPES = "ALLOWED_CHILD_OBJECT_TYPES";
public static String PROP_SOURCE_ID = "SOURCE_ID";
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java b/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
index fb0bb5ce79..233bb4565f 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
@@ -142,7 +142,7 @@ public class CMISTypeDefinition implements Serializable
objectTypeId = typeId;
objectTypeQueryName = cmisMapping.getQueryName(typeId.getQName());
displayName = typeDefinition.getTitle();
- parentTypeId = CMISMapping.RELATIONSHIP_TYPE_ID;
+ parentTypeId = null;
rootTypeQueryName = cmisMapping.getQueryName(CMISMapping.RELATIONSHIP_QNAME);
description = typeDefinition.getDescription();
creatable = false;
diff --git a/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java b/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
index 3d877f09f8..86e7f240eb 100644
--- a/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
+++ b/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
@@ -29,13 +29,17 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.cmis.dictionary.ContentStreamAllowed;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.search.Query;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -49,12 +53,22 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
private AbstractGenericPropertyAccessor genericPropertyAccessor;
+ private CMISService cmisService;
+
private CMISMapping cmisMapping;
-
+
private ServiceRegistry serviceRegistry;
private boolean strict = false;
+ /**
+ * @param cmisService
+ */
+ public void setCMISService(CMISService cmisService)
+ {
+ this.cmisService = cmisService;
+ }
+
/**
* @param cmisMapping
*/
@@ -64,13 +78,13 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
}
/**
- * @return cmis mapping service
+ * @return cmis mapping service
*/
public CMISMapping getCMISMapping()
{
return cmisMapping;
}
-
+
/**
* @param serviceRegistry
*/
@@ -233,7 +247,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
// CMIS Folder
addNamedPropertyAccessor(getParentPropertyAccessor());
- addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES, null, CMISScope.FOLDER));
+ addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES, null, CMISScope.FOLDER));
}
public void addNamedPropertyAccessor(NamedPropertyAccessor namedPropertyAccessor)
@@ -269,7 +283,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
accessor.setCMISMapping(cmisMapping);
return accessor;
}
-
+
public NamedPropertyAccessor getFixedValuePropertyAccessor(String propertyName, Serializable fixedValue, CMISScope scope)
{
FixedValuePropertyAccessor accessor = new FixedValuePropertyAccessor();
@@ -328,7 +342,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
accessor.setCMISMapping(cmisMapping);
return accessor;
}
-
+
public NamedPropertyAccessor getVersionSeriesIsCheckedOutPropertyAccessor()
{
VersionSeriesIsCheckedOutPropertyAccessor accessor = new VersionSeriesIsCheckedOutPropertyAccessor();
@@ -336,7 +350,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
accessor.setCMISMapping(cmisMapping);
return accessor;
}
-
+
public NamedPropertyAccessor getVersionSeriesCheckedOutByPropertyAccessor()
{
VersionSeriesCheckedOutByPropertyAccessor accessor = new VersionSeriesCheckedOutByPropertyAccessor();
@@ -382,7 +396,47 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
ParentPropertyAccessor accessor = new ParentPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
accessor.setCMISMapping(cmisMapping);
+ accessor.setCMISService(cmisService);
return accessor;
}
+ /**
+ * @param lqp
+ * @param propertyName
+ * @param value
+ * @return
+ * @throws ParseException
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
+ if (accessor != null)
+ {
+ return accessor.buildLuceneEquality(lqp, propertyName, value);
+ }
+ else
+ {
+ return genericPropertyAccessor.buildLuceneEquality(lqp, propertyName, value);
+ }
+ }
+
+ /**
+ * @param lqp
+ * @param propertyName
+ * @param not
+ * @return
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
+ if (accessor != null)
+ {
+ return accessor.buildLuceneExists(lqp, propertyName, not);
+ }
+ else
+ {
+ return genericPropertyAccessor.buildLuceneExists(lqp, propertyName, not);
+ }
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java b/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
index 6ff6dc58e0..08984ef708 100644
--- a/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
+++ b/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
@@ -75,7 +75,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI));
assertEquals(properties.get(CMISMapping.PROP_PARENT), rootNodeRef.toString());
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
}
@@ -112,7 +112,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
}
@@ -149,7 +149,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
ContentData contentData = new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK);
@@ -203,7 +203,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
serviceRegistry.getLockService().lock(content, LockType.READ_ONLY_LOCK);
@@ -250,7 +250,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
}
@@ -287,7 +287,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
NodeRef pwc = serviceRegistry.getCheckOutCheckInService().checkout(content);
@@ -321,10 +321,10 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), pwc.toString());
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), false);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), null);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), null);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.toString());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), authenticationComponent.getCurrentUserName());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
@@ -333,7 +333,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
serviceRegistry.getCheckOutCheckInService().cancelCheckout(pwc);
@@ -366,7 +366,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
pwc = serviceRegistry.getCheckOutCheckInService().checkout(content);
@@ -400,10 +400,10 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), pwc.toString());
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), false);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), null);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), null);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.toString());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), authenticationComponent.getCurrentUserName());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
@@ -412,7 +412,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
serviceRegistry.getCheckOutCheckInService().checkin(pwc, null);
@@ -445,7 +445,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
}
@@ -482,7 +482,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
nodeService.addAspect(content, ContentModel.ASPECT_VERSIONABLE, null);
@@ -515,7 +515,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
NodeRef pwc = serviceRegistry.getCheckOutCheckInService().checkout(content);
@@ -549,10 +549,10 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), pwc.toString());
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), false);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), null);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), null);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.toString());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), authenticationComponent.getCurrentUserName());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
@@ -561,7 +561,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
serviceRegistry.getCheckOutCheckInService().cancelCheckout(pwc);
@@ -594,7 +594,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
pwc = serviceRegistry.getCheckOutCheckInService().checkout(content);
@@ -628,10 +628,10 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), pwc.toString());
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), false);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), null);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), null);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.toString());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), authenticationComponent.getCurrentUserName());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
@@ -640,7 +640,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
Map versionProperties = new HashMap();
versionProperties.put(Version.PROP_DESCRIPTION, "Meep");
@@ -676,7 +676,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
pwc = serviceRegistry.getCheckOutCheckInService().checkout(content);
@@ -710,10 +710,10 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), pwc.toString());
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), false);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), null);
- assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), null);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.toString());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY), authenticationComponent.getCurrentUserName());
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
@@ -722,7 +722,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
versionProperties = new HashMap();
versionProperties.put(Version.PROP_DESCRIPTION, "Woof");
@@ -758,7 +758,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI), null);
assertNull(properties.get(CMISMapping.PROP_PARENT));
- assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(properties.get(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
}
public void testSinglePropertyFolderAccess()
@@ -792,7 +792,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_CONTENT_STREAM_URI));
assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_PARENT), rootNodeRef.toString());
- assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
+ assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPES));
assertEquals(cmisPropertyService.getProperty(folder, "CM_NAME"), "BaseFolder");
assertEquals(cmisPropertyService.getProperty(folder, "cm_name"), "BaseFolder");
diff --git a/source/java/org/alfresco/cmis/property/CheckinCommentPropertyAccessor.java b/source/java/org/alfresco/cmis/property/CheckinCommentPropertyAccessor.java
index fcd47607c3..2ce131dd14 100644
--- a/source/java/org/alfresco/cmis/property/CheckinCommentPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/CheckinCommentPropertyAccessor.java
@@ -28,8 +28,10 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.version.Version;
+import org.apache.lucene.search.Query;
/**
* Accesor for the CMIS Checkin Comment
@@ -64,5 +66,21 @@ public class CheckinCommentPropertyAccessor extends AbstractNamedPropertyAccesso
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value)
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not)
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/ContentStreamLengthPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ContentStreamLengthPropertyAccessor.java
index 24e456ca97..e03e6af5a3 100644
--- a/source/java/org/alfresco/cmis/property/ContentStreamLengthPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ContentStreamLengthPropertyAccessor.java
@@ -29,9 +29,13 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* Accessor for CMIS content stream length property
*
@@ -67,4 +71,39 @@ public class ContentStreamLengthPropertyAccessor extends AbstractNamedPropertyAc
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ StringBuilder field = new StringBuilder();
+ field.append("@");
+ field.append(ContentModel.PROP_CONTENT);
+ field.append(".size");
+
+ // Check type conversion
+
+ Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.LONG), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery(field.toString(), asString);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if(not)
+ {
+ return lqp.getFieldQuery("ISNULL", ContentModel.PROP_CONTENT.toString());
+ }
+ else
+ {
+ return lqp.getFieldQuery("ISNOTNULL", ContentModel.PROP_CONTENT.toString());
+ }
+
+
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/ContentStreamMimetypePropertyAccessor.java b/source/java/org/alfresco/cmis/property/ContentStreamMimetypePropertyAccessor.java
index f37d786433..d0b0e3182e 100644
--- a/source/java/org/alfresco/cmis/property/ContentStreamMimetypePropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ContentStreamMimetypePropertyAccessor.java
@@ -29,9 +29,13 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* Accessor for CMIS content stream mimetype property
@@ -69,4 +73,36 @@ public class ContentStreamMimetypePropertyAccessor extends AbstractNamedProperty
return CMISScope.DOCUMENT;
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ StringBuilder field = new StringBuilder();
+ field.append("@");
+ field.append(ContentModel.PROP_CONTENT);
+ field.append(".mimetype");
+
+ // Check type conversion
+
+ Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.TEXT), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery(field.toString(), asString);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if(not)
+ {
+ return lqp.getFieldQuery("ISNULL", ContentModel.PROP_CONTENT.toString());
+ }
+ else
+ {
+ return lqp.getFieldQuery("ISNOTNULL", ContentModel.PROP_CONTENT.toString());
+ }
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/FixedValuePropertyAccessor.java b/source/java/org/alfresco/cmis/property/FixedValuePropertyAccessor.java
index 994bf2fc58..f7df1fea7b 100644
--- a/source/java/org/alfresco/cmis/property/FixedValuePropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/FixedValuePropertyAccessor.java
@@ -26,7 +26,13 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
/**
* Property accessor for fixed value mapping (eg to null, true, etc)
@@ -53,4 +59,49 @@ public class FixedValuePropertyAccessor extends AbstractNamedPropertyAccessor
return fixedValue;
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ if(value.equals(fixedValue))
+ {
+ return new MatchAllDocsQuery();
+ }
+ else
+ {
+ return new TermQuery(new Term("NO_TOKENS", "__"));
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if(not)
+ {
+ if(fixedValue == null)
+ {
+ return new MatchAllDocsQuery();
+ }
+ else
+ {
+ return new TermQuery(new Term("NO_TOKENS", "__"));
+ }
+ }
+ else
+ {
+ if(fixedValue == null)
+ {
+ return new TermQuery(new Term("NO_TOKENS", "__"));
+ }
+ else
+ {
+ return new MatchAllDocsQuery();
+ }
+ }
+
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/GenericPropertyAccessor.java b/source/java/org/alfresco/cmis/property/GenericPropertyAccessor.java
index 55c482690e..45abb60910 100644
--- a/source/java/org/alfresco/cmis/property/GenericPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/GenericPropertyAccessor.java
@@ -26,7 +26,10 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* The API to access a property.
@@ -44,4 +47,8 @@ public interface GenericPropertyAccessor
* @return
*/
public Serializable getProperty(NodeRef nodeRef, String propertyName);
+
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException;
+
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException;
}
diff --git a/source/java/org/alfresco/cmis/property/IsImmutablePropertyAccessor.java b/source/java/org/alfresco/cmis/property/IsImmutablePropertyAccessor.java
index 0a14eaacc6..b6810d019f 100644
--- a/source/java/org/alfresco/cmis/property/IsImmutablePropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/IsImmutablePropertyAccessor.java
@@ -29,9 +29,12 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* Property accessor for CMIS is immutable property
@@ -72,5 +75,21 @@ public class IsImmutablePropertyAccessor extends AbstractNamedPropertyAccessor
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/IsLatestVersionPropertyAccessor.java b/source/java/org/alfresco/cmis/property/IsLatestVersionPropertyAccessor.java
index 5c3fd310fe..fb794ee363 100644
--- a/source/java/org/alfresco/cmis/property/IsLatestVersionPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/IsLatestVersionPropertyAccessor.java
@@ -29,7 +29,10 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* Accesser for CMIS is latest version property
@@ -55,5 +58,21 @@ public class IsLatestVersionPropertyAccessor extends AbstractNamedPropertyAccess
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/IsMajorVersionPropertyAccessor.java b/source/java/org/alfresco/cmis/property/IsMajorVersionPropertyAccessor.java
index 0866512534..febd135959 100644
--- a/source/java/org/alfresco/cmis/property/IsMajorVersionPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/IsMajorVersionPropertyAccessor.java
@@ -29,9 +29,12 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.version.Version;
import org.alfresco.service.cmr.version.VersionType;
+import org.apache.lucene.search.Query;
/**
* Accessor for CMIS is major version property
@@ -73,4 +76,20 @@ public class IsMajorVersionPropertyAccessor extends AbstractNamedPropertyAccesso
return CMISScope.DOCUMENT;
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java b/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
index 49aa41e58e..11d4e818df 100644
--- a/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
@@ -26,8 +26,13 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.search.Query;
/**
* Generic mapping of CMIS style property names to Alfresco properties (for non CMIS properties)
@@ -42,4 +47,42 @@ public class MappingPropertyAccessor extends AbstractGenericPropertyAccessor
return getServiceRegistry().getNodeService().getProperty(nodeRef, propertyQname);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.GenericPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ QName propertyQname = getCMISMapping().getPropertyQName(propertyName);
+ StringBuilder field = new StringBuilder();
+ field.append("@");
+ field.append(propertyQname);
+
+ // Check type conversion
+
+ PropertyDefinition pd = getServiceRegistry().getDictionaryService().getProperty(propertyQname);
+ Object converted = DefaultTypeConverter.INSTANCE.convert(pd.getDataType(), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery(field.toString(), asString);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.GenericPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+
+ QName propertyQname = getCMISMapping().getPropertyQName(propertyName);
+ if(not)
+ {
+ return lqp.getFieldQuery("ISNULL", propertyQname.toString());
+ }
+ else
+ {
+ return lqp.getFieldQuery("ISNOTNULL", propertyQname.toString());
+ }
+ }
+
+
+
}
diff --git a/source/java/org/alfresco/cmis/property/NamedPropertyAccessor.java b/source/java/org/alfresco/cmis/property/NamedPropertyAccessor.java
index 9a415ca2e1..3b61beeb79 100644
--- a/source/java/org/alfresco/cmis/property/NamedPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/NamedPropertyAccessor.java
@@ -27,7 +27,10 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* Named property accessor
@@ -55,4 +58,15 @@ public interface NamedPropertyAccessor
* @return
*/
public CMISScope getScope();
+
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException;
+
+ /**
+ * @param lqp
+ * @param propertyName
+ * @param not
+ * @return
+ * @throws ParseException
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException;
}
diff --git a/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
index 3956f5dd1b..8c0ece0868 100644
--- a/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
@@ -29,8 +29,15 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
/**
* Get the CMIS object id property.
@@ -73,4 +80,38 @@ public class ObjectIdPropertyAccessor extends AbstractNamedPropertyAccessor
return CMISScope.OBJECT;
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser,
+ * java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ // TODO: version label form
+
+ Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.NODE_REF), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery("ID", asString);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser,
+ * java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if (not)
+ {
+ return new TermQuery(new Term("NO_TOKENS", "__"));
+ }
+ else
+ {
+ return new MatchAllDocsQuery();
+ }
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
index c9045aff27..3fd254e963 100644
--- a/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
@@ -28,8 +28,15 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
/**
* Get the CMIS object type id property
@@ -71,5 +78,34 @@ public class ObjectTypeIdPropertyAccessor extends AbstractNamedPropertyAccessor
return CMISScope.OBJECT;
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ // TODO: version label form
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ return lqp.getFieldQuery("TYPE", asString);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser,
+ * java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if (not)
+ {
+ return new TermQuery(new Term("NO_TOKENS", "__"));
+ }
+ else
+ {
+ return new MatchAllDocsQuery();
+ }
+ }
+
+
}
diff --git a/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
index 1e9615d7fc..3475ad946e 100644
--- a/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
@@ -26,10 +26,19 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
+import org.alfresco.cmis.CMISService;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
/**
* Get the CMIS parent property
@@ -39,11 +48,27 @@ import org.alfresco.service.cmr.repository.NodeRef;
*/
public class ParentPropertyAccessor extends AbstractNamedPropertyAccessor
{
+ private CMISService cmisService;
+
+ /**
+ * @param cmisService
+ */
+ public void setCMISService(CMISService cmisService)
+ {
+ this.cmisService = cmisService;
+ }
+
+
public Serializable getProperty(NodeRef nodeRef)
{
+ if (nodeRef.equals(cmisService.getDefaultRootNodeRef()))
+ {
+ return null;
+ }
+
ChildAssociationRef car = getServiceRegistry().getNodeService().getPrimaryParent(nodeRef);
- if((car != null) && (car.getParentRef() != null))
+ if ((car != null) && (car.getParentRef() != null))
{
return car.getParentRef().toString();
}
@@ -66,4 +91,36 @@ public class ParentPropertyAccessor extends AbstractNamedPropertyAccessor
{
return CMISScope.FOLDER;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ // TODO: version label form
+
+ Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.NODE_REF), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery("PARENT", asString);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser,
+ * java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ if (not)
+ {
+ return new TermQuery(new Term("ISROOT", "T"));
+ }
+ else
+ {
+ return new MatchAllDocsQuery();
+ }
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/SimplePropertyAccessor.java b/source/java/org/alfresco/cmis/property/SimplePropertyAccessor.java
index 65e1aecb78..03c41ecefa 100644
--- a/source/java/org/alfresco/cmis/property/SimplePropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/SimplePropertyAccessor.java
@@ -26,8 +26,13 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.search.Query;
import org.springframework.beans.factory.InitializingBean;
/**
@@ -37,7 +42,7 @@ import org.springframework.beans.factory.InitializingBean;
*/
public class SimplePropertyAccessor extends AbstractNamedPropertyAccessor implements InitializingBean
{
- private QName qname;
+ private QName propertyQname;
private String mapping;
@@ -48,12 +53,45 @@ public class SimplePropertyAccessor extends AbstractNamedPropertyAccessor implem
public Serializable getProperty(NodeRef nodeRef)
{
- return getServiceRegistry().getNodeService().getProperty(nodeRef, qname);
+ return getServiceRegistry().getNodeService().getProperty(nodeRef, propertyQname);
}
public void afterPropertiesSet() throws Exception
{
- qname = QName.resolveToQName(getServiceRegistry().getNamespaceService(), mapping);
+ propertyQname = QName.resolveToQName(getServiceRegistry().getNamespaceService(), mapping);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.GenericPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ StringBuilder field = new StringBuilder();
+ field.append("@");
+ field.append(propertyQname);
+
+ // Check type conversion
+
+ PropertyDefinition pd = getServiceRegistry().getDictionaryService().getProperty(propertyQname);
+ Object converted = DefaultTypeConverter.INSTANCE.convert(pd.getDataType(), value);
+ String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted);
+
+ return lqp.getFieldQuery(field.toString(), asString);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.GenericPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+
+ if(not)
+ {
+ return lqp.getFieldQuery("ISNULL", propertyQname.toString());
+ }
+ else
+ {
+ return lqp.getFieldQuery("ISNOTNULL", propertyQname.toString());
+ }
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutByPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutByPropertyAccessor.java
index 8ee687b702..ddcc1b2b73 100644
--- a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutByPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutByPropertyAccessor.java
@@ -29,8 +29,11 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* Get the CMIS version series checked out by property
@@ -44,7 +47,7 @@ public class VersionSeriesCheckedOutByPropertyAccessor extends AbstractNamedProp
{
if (getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY))
{
- return null;
+ return getServiceRegistry().getNodeService().getProperty(nodeRef, ContentModel.PROP_WORKING_COPY_OWNER);
}
else
{
@@ -79,4 +82,21 @@ public class VersionSeriesCheckedOutByPropertyAccessor extends AbstractNamedProp
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
index ea7663c6fd..58be9f0f30 100644
--- a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
@@ -29,8 +29,11 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* Get the CMIS version series checked out id property
@@ -44,7 +47,7 @@ public class VersionSeriesCheckedOutIdPropertyAccessor extends AbstractNamedProp
{
if (getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY))
{
- return null;
+ return nodeRef.toString();
}
else
{
@@ -74,4 +77,21 @@ public class VersionSeriesCheckedOutIdPropertyAccessor extends AbstractNamedProp
return CMISScope.DOCUMENT;
}
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java
index 83c9cb1cf4..854f944cab 100644
--- a/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java
@@ -28,7 +28,11 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* @author andyh
@@ -42,6 +46,11 @@ public class VersionSeriesIdPropertyAccessor extends AbstractNamedPropertyAccess
*/
public Serializable getProperty(NodeRef nodeRef)
{
+ if (getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY))
+ {
+ Serializable seriesId = getServiceRegistry().getNodeService().getProperty(nodeRef, ContentModel.PROP_COPY_REFERENCE);
+ return (seriesId != null) ? seriesId.toString() : null;
+ }
return nodeRef.toString();
}
@@ -56,4 +65,21 @@ public class VersionSeriesIdPropertyAccessor extends AbstractNamedPropertyAccess
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesIsCheckedOutPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesIsCheckedOutPropertyAccessor.java
index 643a1ada5e..29a52ddb66 100644
--- a/source/java/org/alfresco/cmis/property/VersionSeriesIsCheckedOutPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesIsCheckedOutPropertyAccessor.java
@@ -29,8 +29,11 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.apache.lucene.search.Query;
/**
* Get the CMIS version series checked out property
@@ -44,7 +47,7 @@ public class VersionSeriesIsCheckedOutPropertyAccessor extends AbstractNamedProp
{
if (getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY))
{
- return false;
+ return true;
}
else
{
@@ -72,4 +75,22 @@ public class VersionSeriesIsCheckedOutPropertyAccessor extends AbstractNamedProp
{
return CMISScope.DOCUMENT;
}
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.io.Serializable)
+ */
+ public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value) throws ParseException
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.String, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
+ {
+ return null;
+ }
+
+
}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSetRowImpl.java b/source/java/org/alfresco/cmis/search/CMISResultSetRowImpl.java
index dbc5f33356..775ae018e7 100644
--- a/source/java/org/alfresco/cmis/search/CMISResultSetRowImpl.java
+++ b/source/java/org/alfresco/cmis/search/CMISResultSetRowImpl.java
@@ -147,6 +147,7 @@ public class CMISResultSetRowImpl implements CMISResultSetRow
context.setNodeRefs(nodeRefs);
context.setNodeService(nodeService);
context.setScores(scores);
+ context.setScore(getScore());
return column.getFunction().getValue(column.getFunctionArguments(), context);
}
}
diff --git a/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java b/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java
index fb44f14844..668722c7fd 100644
--- a/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java
+++ b/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java
@@ -29,10 +29,14 @@ import java.util.Map;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
import org.alfresco.cmis.property.CMISPropertyService;
+import org.alfresco.cmis.property.CMISPropertyServiceImpl;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.search.Query;
/**
* @author andyh
@@ -49,44 +53,49 @@ public class CmisFunctionEvaluationContext implements FunctionEvaluationContext
private CMISDictionaryService cmisDictionaryService;
-
-
+ private Float score;
+
/**
- * @param nodeRefs the nodeRefs to set
+ * @param nodeRefs
+ * the nodeRefs to set
*/
- protected void setNodeRefs(Map nodeRefs)
+ public void setNodeRefs(Map nodeRefs)
{
this.nodeRefs = nodeRefs;
}
/**
- * @param scores the scores to set
+ * @param scores
+ * the scores to set
*/
- protected void setScores(Map scores)
+ public void setScores(Map scores)
{
this.scores = scores;
}
/**
- * @param nodeService the nodeService to set
+ * @param nodeService
+ * the nodeService to set
*/
- protected void setNodeService(NodeService nodeService)
+ public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
/**
- * @param cmisPropertyService the cmisPropertyService to set
+ * @param cmisPropertyService
+ * the cmisPropertyService to set
*/
- protected void setCmisPropertyService(CMISPropertyService cmisPropertyService)
+ public void setCmisPropertyService(CMISPropertyService cmisPropertyService)
{
this.cmisPropertyService = cmisPropertyService;
}
/**
- * @param cmisDictionaryService the cmisDictionaryService to set
+ * @param cmisDictionaryService
+ * the cmisDictionaryService to set
*/
- protected void setCmisDictionaryService(CMISDictionaryService cmisDictionaryService)
+ public void setCmisDictionaryService(CMISDictionaryService cmisDictionaryService)
{
this.cmisDictionaryService = cmisDictionaryService;
}
@@ -133,4 +142,52 @@ public class CmisFunctionEvaluationContext implements FunctionEvaluationContext
return scores;
}
+ /**
+ * @return the score
+ */
+ public Float getScore()
+ {
+ return score;
+ }
+
+ /**
+ * @param score
+ * the score to set
+ */
+ public void setScore(Float score)
+ {
+ this.score = score;
+ }
+
+ public Query buildLuceneEquality(LuceneQueryParser lqp, QName propertyQName, Serializable value) throws ParseException
+ {
+ if(cmisPropertyService instanceof CMISPropertyServiceImpl)
+ {
+ String propertyName = cmisDictionaryService.getCMISMapping().getCmisPropertyName(propertyQName);
+ CMISPropertyServiceImpl impl = (CMISPropertyServiceImpl)cmisPropertyService;
+ return impl.buildLuceneEquality(lqp, propertyName, value);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, org.alfresco.service.namespace.QName, java.lang.Boolean)
+ */
+ public Query buildLuceneExists(LuceneQueryParser lqp, QName propertyQName, Boolean not) throws ParseException
+ {
+ if(cmisPropertyService instanceof CMISPropertyServiceImpl)
+ {
+ String propertyName = cmisDictionaryService.getCMISMapping().getCmisPropertyName(propertyQName);
+ CMISPropertyServiceImpl impl = (CMISPropertyServiceImpl)cmisPropertyService;
+ return impl.buildLuceneExists(lqp, propertyName, not);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java
index 4ab637fac6..c836ad66ab 100644
--- a/source/java/org/alfresco/cmis/search/QueryTest.java
+++ b/source/java/org/alfresco/cmis/search/QueryTest.java
@@ -24,14 +24,239 @@
*/
package org.alfresco.cmis.search;
+import java.io.Serializable;
+
import org.alfresco.cmis.dictionary.BaseCMISTest;
import org.alfresco.cmis.dictionary.CMISMapping;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
/**
* @author andyh
*/
public class QueryTest extends BaseCMISTest
{
+ public void testSimpleConjunction()
+ {
+
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME IS NOT NULL AND NAME = 'company'";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME IS NOT NULL AND NAME = 'home'";
+ rs = cmisQueryService.query(query);
+ assertEquals(2, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME IS NOT NULL AND NAME = 'home' AND NAME = 'company'";
+ rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+ }
+
+ public void testSimpleDisjunction()
+ {
+
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME = 'guest'";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME = 'company'";
+ rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME = 'guest' OR NAME = 'company'";
+ rs = cmisQueryService.query(query);
+ assertEquals(2, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+
+ }
+
+ public void testExists()
+ {
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME IS NOT NULL";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(33, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME IS NULL";
+ rs = cmisQueryService.query(query);
+ assertEquals(0, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+
+ query = "SELECT * FROM DOCUMENT_OBJECT_TYPE WHERE URI IS NOT NULL";
+ rs = cmisQueryService.query(query);
+ assertEquals(0, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM DOCUMENT_OBJECT_TYPE WHERE URI IS NULL";
+ rs = cmisQueryService.query(query);
+ assertEquals(45, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+ }
+
+ public void testObjectEquals()
+ {
+
+ }
+
+ public void testDocumentEquals()
+ {
+
+ }
+
+ public void testFolderEquals()
+ {
+ NodeRef rootNode = cmisService.getDefaultRootNodeRef();
+
+ Serializable ser = cmisPropertyService.getProperty(rootNode, CMISMapping.PROP_NAME);
+ String name = DefaultTypeConverter.INSTANCE.convert(String.class, ser);
+
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME = '" + name + "'";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE NAME = 'company'";
+ rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE PARENT = '" + rootNode.toString() + "'";
+ rs = cmisQueryService.query(query);
+ assertEquals(4, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE ALLOWED_CHILD_OBJECT_TYPES = 'meep'";
+ rs = cmisQueryService.query(query);
+ assertEquals(0, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ rs = null;
+
+ }
+
+ public void test_IN_TREE()
+ {
+ NodeRef rootNode = cmisService.getDefaultRootNodeRef();
+
+ Serializable ser = cmisPropertyService.getProperty(rootNode, CMISMapping.PROP_OBJECT_ID);
+ String id = DefaultTypeConverter.INSTANCE.convert(String.class, ser);
+
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE IN_TREE('" + id + "')";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(32, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+
+ }
+
+ public void test_IN_FOLDER()
+ {
+ NodeRef rootNode = cmisService.getDefaultRootNodeRef();
+
+ Serializable ser = cmisPropertyService.getProperty(rootNode, CMISMapping.PROP_OBJECT_ID);
+ String id = DefaultTypeConverter.INSTANCE.convert(String.class, ser);
+
+ String query = "SELECT * FROM FOLDER_OBJECT_TYPE WHERE IN_FOLDER('" + id + "')";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(4, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ }
+
+ public void testFTS()
+ {
+ String query = "SELECT * FROM DOCUMENT_OBJECT_TYPE WHERE CONTAINS('\"Sample demonstrating the listing of AVM folder contents\"')";
+ CMISResultSet rs = cmisQueryService.query(query);
+ assertEquals(1, rs.length());
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println(row.getValue("NAME") + " Score " + row.getScore() + " " + row.getScores());
+ }
+ rs.close();
+ }
+
public void testBasicSelectAsGuest()
{
runAs("guest");
@@ -107,13 +332,13 @@ public class QueryTest extends BaseCMISTest
{
for (String column : md.getColumnNames())
{
- System.out.println("Column " +column + " value =" + row.getValue(column));
+ System.out.println("Column " + column + " value =" + row.getValue(column));
}
System.out.println("\n\n");
}
rs.close();
}
-
+
public void testBasicAllFolderColumns()
{
String query = "SELECT * FROM FOLDER_OBJECT_TYPE AS DOC";
@@ -124,13 +349,13 @@ public class QueryTest extends BaseCMISTest
{
for (String column : md.getColumnNames())
{
- System.out.println("Column " +column + " value =" + row.getValue(column));
+ System.out.println("Column " + column + " value =" + row.getValue(column));
}
System.out.println("\n\n");
}
rs.close();
}
-
+
public void testBasicAll_ST_SITES_Columns()
{
String query = "SELECT * FROM ST_SITES AS DOC";
@@ -141,17 +366,42 @@ public class QueryTest extends BaseCMISTest
{
for (String column : md.getColumnNames())
{
- System.out.println("Column " +column + " value =" + row.getValue(column));
+ System.out.println("Column " + column + " value =" + row.getValue(column));
}
System.out.println("\n\n");
System.out.println(row.getValues());
System.out.println("\n\n");
}
-
+
+ rs.close();
+ }
+
+ public void testFunctionColumns()
+ {
+ String query = "SELECT DOC.NAME AS NAME, \nLOWER(\tDOC.NAME \n), LOWER ( DOC.NAME ) AS LNAME, UPPER ( DOC.NAME ) , UPPER(DOC.NAME) AS UNAME, Score(), SCORE(DOC), SCORE() AS SCORED, SCORE(DOC) AS DOCSCORE FROM FOLDER_OBJECT_TYPE AS DOC";
+ CMISResultSet rs = cmisQueryService.query(query);
+ CMISResultSetMetaData md = rs.getMetaData();
+ assertNotNull(md.getQueryOptions());
+ assertEquals(9, md.getColumnNames().length);
+ assertNotNull(md.getColumn("NAME"));
+ assertNotNull(md.getColumn("LOWER(\tDOC.NAME \n)"));
+ assertNotNull(md.getColumn("LNAME"));
+ assertNotNull(md.getColumn("UPPER ( DOC.NAME )"));
+ assertNotNull(md.getColumn("UNAME"));
+ assertNotNull(md.getColumn("Score()"));
+ assertNotNull(md.getColumn("SCORE(DOC)"));
+ assertNotNull(md.getColumn("SCORED"));
+ assertNotNull(md.getColumn("DOCSCORE"));
+ assertEquals(1, md.getSelectors().length);
+ assertNotNull(md.getSelector("DOC"));
+ for (CMISResultSetRow row : rs)
+ {
+ System.out.println("\n\n");
+ System.out.println(row.getValues());
+ System.out.println("\n\n");
+ }
rs.close();
}
-
-
public void xtestParse1()
{
diff --git a/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java b/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java
index 52d62f1e4b..6e33c1a01b 100644
--- a/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java
+++ b/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java
@@ -30,6 +30,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;
import org.alfresco.cmis.dictionary.CMISCardinality;
import org.alfresco.cmis.dictionary.CMISDictionaryService;
@@ -118,7 +119,7 @@ public class CMISQueryParser
CommonTree sourceNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.SOURCE);
Source source = buildSource(sourceNode, joinSupport, factory);
Map selectors = source.getSelectors();
- ArrayList columns = buildColumns(queryNode, factory, selectors);
+ ArrayList columns = buildColumns(queryNode, factory, selectors, options.getQuery());
HashSet columnNames = new HashSet();
for(Column column : columns)
@@ -320,11 +321,11 @@ public class CMISQueryParser
function = factory.getFunction(functionName);
argNode = (CommonTree) predicateNode.getChild(0);
functionArguments = new LinkedHashMap();
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Descendant.ARG_ANCESTOR), factory, selectors);
functionArguments.put(arg.getName(), arg);
if (predicateNode.getChildCount() > 1)
{
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Descendant.ARG_SELECTOR), factory, selectors);
functionArguments.put(arg.getName(), arg);
}
return factory.createFunctionalConstraint(function, functionArguments);
@@ -335,7 +336,7 @@ public class CMISQueryParser
functionArguments = new LinkedHashMap();
arg = getFunctionArgument(argNode, function.getArgumentDefinition(Exists.ARG_PROPERTY), factory, selectors);
functionArguments.put(arg.getName(), arg);
- arg = factory.createLiteralArgument(Exists.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() == 1));
+ arg = factory.createLiteralArgument(Exists.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 1));
functionArguments.put(arg.getName(), arg);
return factory.createFunctionalConstraint(function, functionArguments);
case CMISParser.PRED_FTS:
@@ -378,7 +379,7 @@ public class CMISQueryParser
FTSParser parser = null;
try
{
- CharStream cs = new ANTLRStringStream(ftsExpression);
+ CharStream cs = new ANTLRStringStream(ftsExpression.substring(1, ftsExpression.length()-1));
FTSLexer lexer = new FTSLexer(cs);
CommonTokenStream tokens = new CommonTokenStream(lexer);
parser = new FTSParser(tokens);
@@ -656,7 +657,7 @@ public class CMISQueryParser
}
@SuppressWarnings("unchecked")
- private ArrayList buildColumns(CommonTree queryNode, QueryModelFactory factory, Map selectors)
+ private ArrayList buildColumns(CommonTree queryNode, QueryModelFactory factory, Map selectors, String query)
{
ArrayList columns = new ArrayList();
CommonTree starNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ALL_COLUMNS);
@@ -802,10 +803,10 @@ public class CMISQueryParser
Collection definitions = function.getArgumentDefinitions().values();
Map functionArguments = new LinkedHashMap();
- int childIndex = 1;
+ int childIndex = 2;
for (ArgumentDefinition definition : definitions)
{
- if (functionNode.getChildCount() > childIndex)
+ if (functionNode.getChildCount() > childIndex+1)
{
CommonTree argNode = (CommonTree) functionNode.getChild(childIndex++);
Argument arg = getFunctionArgument(argNode, definition, factory, selectors);
@@ -827,7 +828,13 @@ public class CMISQueryParser
}
}
- String alias = function.getName();
+
+ CommonTree rparenNode = (CommonTree)functionNode.getChild(functionNode.getChildCount()-1);
+
+ int start = getStringPosition(query, functionNode.getLine(), functionNode.getCharPositionInLine());
+ int end = getStringPosition(query, rparenNode.getLine(), rparenNode.getCharPositionInLine());
+
+ String alias = query.substring(start, end+1);
if (columnNode.getChildCount() > 1)
{
alias = columnNode.getChild(1).getText();
@@ -842,6 +849,33 @@ public class CMISQueryParser
return columns;
}
+
+
+
+ /**
+ * @param query
+ * @param line
+ * @param charPositionInLine
+ * @return
+ */
+ private int getStringPosition(String query, int line, int charPositionInLine)
+ {
+ StringTokenizer tokenizer = new StringTokenizer(query, "\n\r\f");
+ String[] lines = new String[tokenizer.countTokens()];
+ int i = 0;
+ while(tokenizer.hasMoreElements())
+ {
+ lines[i++] = tokenizer.nextToken();
+ }
+
+ int position = 0;
+ for(i = 0; i < line-1; i++)
+ {
+ position += lines[i].length();
+ position++;
+ }
+ return position + charPositionInLine;
+ }
private Argument getFunctionArgument(CommonTree argNode, ArgumentDefinition definition, QueryModelFactory factory, Map selectors)
{
@@ -904,7 +938,9 @@ public class CMISQueryParser
}
else if (argNode.getType() == CMISParser.STRING_LITERAL)
{
- Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getChild(0).getText());
+ String text = argNode.getChild(0).getText();
+ text = text.substring(1, text.length()-1);
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, text);
return arg;
}
else if (argNode.getType() == CMISParser.LIST)
@@ -935,10 +971,10 @@ public class CMISQueryParser
Collection definitions = function.getArgumentDefinitions().values();
Map functionArguments = new LinkedHashMap();
- int childIndex = 1;
+ int childIndex = 2;
for (ArgumentDefinition currentDefinition : definitions)
{
- if (argNode.getChildCount() > childIndex)
+ if (argNode.getChildCount() > childIndex+1)
{
CommonTree currentArgNode = (CommonTree) argNode.getChild(childIndex++);
Argument arg = getFunctionArgument(currentArgNode, currentDefinition, factory, selectors);
diff --git a/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java b/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java
index d1e8ebcf71..cca0d4aab2 100644
--- a/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java
+++ b/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java
@@ -24,7 +24,6 @@
*/
package org.alfresco.cmis.search.impl;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -36,6 +35,7 @@ import org.alfresco.cmis.search.CMISQueryOptions;
import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.cmis.search.CMISResultSet;
import org.alfresco.cmis.search.CMISResultSetImpl;
+import org.alfresco.cmis.search.CmisFunctionEvaluationContext;
import org.alfresco.cmis.search.FullTextSearchSupport;
import org.alfresco.cmis.search.JoinSupport;
import org.alfresco.repo.search.impl.querymodel.Query;
@@ -51,7 +51,7 @@ public class CMISQueryServiceImpl implements CMISQueryService
private CMISService cmisService;
private CMISDictionaryService cmisDictionaryService;
-
+
private CMISPropertyService cmisPropertyService;
private CMISMapping cmisMapping;
@@ -105,10 +105,9 @@ public class CMISQueryServiceImpl implements CMISQueryService
this.nodeService = nodeService;
}
-
-
/**
- * @param cmisPropertyService the cmisPropertyService to set
+ * @param cmisPropertyService
+ * the cmisPropertyService to set
*/
public void setCmisPropertyService(CMISPropertyService cmisPropertyService)
{
@@ -125,20 +124,17 @@ public class CMISQueryServiceImpl implements CMISQueryService
CMISQueryParser parser = new CMISQueryParser(options, cmisDictionaryService, cmisMapping, getJoinSupport());
Query query = parser.parse(queryEngine.getQueryModelFactory());
System.out.println(query);
- try
- {
- ResultSet lucene = queryEngine.executeQuery(query, query.getSource().getSelector(), options);
- Map wrapped = new HashMap();
- wrapped.put(query.getSource().getSelector(), lucene);
- CMISResultSet cmis = new CMISResultSetImpl(wrapped, options, nodeService, query, cmisDictionaryService, cmisPropertyService);
- return cmis;
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
+
+ CmisFunctionEvaluationContext functionContext = new CmisFunctionEvaluationContext();
+ functionContext.setCmisDictionaryService(cmisDictionaryService);
+ functionContext.setCmisPropertyService(cmisPropertyService);
+ functionContext.setNodeService(nodeService);
+
+ ResultSet lucene = queryEngine.executeQuery(query, query.getSource().getSelector(), options, functionContext);
+ Map wrapped = new HashMap();
+ wrapped.put(query.getSource().getSelector(), lucene);
+ CMISResultSet cmis = new CMISResultSetImpl(wrapped, options, nodeService, query, cmisDictionaryService, cmisPropertyService);
+ return cmis;
}
/*
@@ -169,7 +165,7 @@ public class CMISQueryServiceImpl implements CMISQueryService
*/
public FullTextSearchSupport getFullTextSearchSupport()
{
- return FullTextSearchSupport.FULL_TEXT_AND_STRUCTURED;
+ return FullTextSearchSupport.FULL_TEXT_ONLY;
}
/*
diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java
index f1fa468e8b..e2a137b6d9 100644
--- a/source/java/org/alfresco/repo/jscript/ScriptNode.java
+++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java
@@ -2694,6 +2694,21 @@ public class ScriptNode implements Serializable, Scopeable
this.contentData = (ContentData) services.getNodeService().getProperty(nodeRef, this.property);
}
+ /**
+ * Set the content stream from another input stream
+ *
+ * @param inputStream
+ */
+ public void write(InputStream inputStream)
+ {
+ ContentService contentService = services.getContentService();
+ ContentWriter writer = contentService.getWriter(nodeRef, this.property, true);
+ writer.putContent(inputStream);
+
+ // update cached variables after putContent()
+ this.contentData = (ContentData) services.getNodeService().getProperty(nodeRef, this.property);
+ }
+
/**
* @return download URL to the content
*/
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 f28e352bbb..3c6ba0c1c5 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java
@@ -108,9 +108,8 @@ public class LuceneQueryParser extends QueryParser
* @throws ParseException
* if the parsing fails
*/
- static public Query parse(String query, String field, Analyzer analyzer,
- NamespacePrefixResolver namespacePrefixResolver, DictionaryService dictionaryService, TenantService tenantService,
- Operator defaultOperator, SearchParameters searchParameters, LuceneConfig config, IndexReader indexReader) throws ParseException
+ static public Query parse(String query, String field, Analyzer analyzer, NamespacePrefixResolver namespacePrefixResolver, DictionaryService dictionaryService,
+ TenantService tenantService, Operator defaultOperator, SearchParameters searchParameters, LuceneConfig config, IndexReader indexReader) throws ParseException
{
if (s_logger.isDebugEnabled())
{
@@ -133,7 +132,7 @@ public class LuceneQueryParser extends QueryParser
return result;
}
- private void setLuceneConfig(LuceneConfig config)
+ public void setLuceneConfig(LuceneConfig config)
{
this.config = config;
}
@@ -143,7 +142,7 @@ public class LuceneQueryParser extends QueryParser
this.indexReader = indexReader;
}
- private void setSearchParameters(SearchParameters searchParameters)
+ public void setSearchParameters(SearchParameters searchParameters)
{
this.searchParameters = searchParameters;
}
@@ -152,7 +151,7 @@ public class LuceneQueryParser extends QueryParser
{
this.namespacePrefixResolver = namespacePrefixResolver;
}
-
+
public void setTenantService(TenantService tenantService)
{
this.tenantService = tenantService;
@@ -188,7 +187,7 @@ public class LuceneQueryParser extends QueryParser
}
- protected Query getFieldQuery(String field, String queryText) throws ParseException
+ public Query getFieldQuery(String field, String queryText) throws ParseException
{
try
{
@@ -409,9 +408,8 @@ public class LuceneQueryParser extends QueryParser
}
}
+ Collection subclasses = dictionaryService.getSubAspects(target.getName(), true);
- Collection subclasses = dictionaryService.getSubAspects(target.getName(), true);
-
BooleanQuery booleanQuery = new BooleanQuery();
for (QName qname : subclasses)
{
@@ -538,7 +536,7 @@ public class LuceneQueryParser extends QueryParser
Query presenceQuery = getWildcardQuery("@" + qname.toString(), "*");
if ((typeQuery != null) && (presenceQuery != null))
{
- query.add(typeQuery, Occur.MUST);
+ //query.add(typeQuery, Occur.MUST);
query.add(presenceQuery, Occur.MUST);
}
return query;
@@ -888,6 +886,7 @@ public class LuceneQueryParser extends QueryParser
if (isMlText)
{
int position = c.termText().indexOf("}");
+ @SuppressWarnings("unused")
String language = c.termText().substring(0, position + 1);
String token = c.termText().substring(position + 1);
int oldPositionIncrement = replace.getPositionIncrement();
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/query/PathQuery.java b/source/java/org/alfresco/repo/search/impl/lucene/query/PathQuery.java
index d5dd0c961c..ea78cfd9b2 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/query/PathQuery.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/query/PathQuery.java
@@ -174,7 +174,50 @@ public class PathQuery extends Query
*/
public String toString()
{
- return "";
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append("PATH:");
+ int i = 0;
+ for(StructuredFieldPosition sfp : pathStructuredFieldPositions)
+ {
+ if(i % 2 == 0)
+ {
+ stringBuilder.append('/');
+ }
+ else
+ {
+ stringBuilder.append(':');
+ }
+ if(sfp.matchesAll())
+ {
+ stringBuilder.append("*");
+ }
+ else
+ {
+ stringBuilder.append(sfp.getTermText());
+ }
+ i++;
+ }
+ for(StructuredFieldPosition sfp : qNameStructuredFieldPositions)
+ {
+ if(i % 2 == 0)
+ {
+ stringBuilder.append('/');
+ }
+ else
+ {
+ stringBuilder.append(':');
+ }
+ if(sfp.matchesAll())
+ {
+ stringBuilder.append("*");
+ }
+ else
+ {
+ stringBuilder.append(sfp.getTermText());
+ }
+ i++;
+ }
+ return stringBuilder.toString();
}
/*
@@ -182,7 +225,7 @@ public class PathQuery extends Query
*/
public String toString(String field)
{
- return "";
+ return toString();
}
private class StructuredFieldWeight implements Weight
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 f4a563b081..c7dfcfde2d 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
@@ -193,7 +193,7 @@ multiValuedColumnReference
valueFunction
: functionName=keyWordOrId LPAREN functionArgument* RPAREN
- -> ^(FUNCTION $functionName functionArgument*)
+ -> ^(FUNCTION $functionName LPAREN functionArgument* RPAREN)
;
functionArgument
@@ -348,8 +348,10 @@ likePredicate
;
nullPredicate
- : ( (columnReference)=> columnReference | multiValuedColumnReference) IS NOT? NULL
- -> ^(PRED_EXISTS columnReference NOT?)
+ : ( (columnReference)=> columnReference | multiValuedColumnReference) IS NULL
+ -> ^(PRED_EXISTS columnReference NOT)
+ | ( (columnReference)=> columnReference | multiValuedColumnReference) IS NOT NULL
+ -> ^(PRED_EXISTS columnReference)
;
quantifiedComparisonPredicate
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 fc94878287..1bb5c30540 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-cmis2\\ANTLR\\CMIS.g 2008-07-21 10:14:45
+// $ANTLR 3.1b1 W:\\workspace-cmis2\\ANTLR\\CMIS.g 2008-07-29 14:25:59
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -111,8 +111,8 @@ public class CMISLexer extends Lexer {
try {
int _type = SINGLE_QUOTE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:504:9: ( '\\'' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:504:17: '\\''
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:506:9: ( '\\'' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:506:17: '\\''
{
match('\'');
@@ -129,8 +129,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start ESCAPED_SINGLE_QUOTE
public final void mESCAPED_SINGLE_QUOTE() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:512:9: ( '\\'\\'' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:512:17: '\\'\\''
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:514:9: ( '\\'\\'' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:514:17: '\\'\\''
{
match("\'\'");
@@ -148,11 +148,11 @@ public class CMISLexer extends Lexer {
try {
int _type = QUOTED_STRING;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:5: ( SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:9: SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:517:5: ( SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:517:9: SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE
{
mSINGLE_QUOTE();
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:22: (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:517:22: (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )*
loop1:
do {
int alt1=3;
@@ -174,7 +174,7 @@ public class CMISLexer extends Lexer {
switch (alt1) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:24: ~ SINGLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:517:24: ~ SINGLE_QUOTE
{
if ( (input.LA(1)>='\u0000' && input.LA(1)<='I')||(input.LA(1)>='K' && input.LA(1)<='\uFFFE') ) {
input.consume();
@@ -189,7 +189,7 @@ public class CMISLexer extends Lexer {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:40: ESCAPED_SINGLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:517:40: ESCAPED_SINGLE_QUOTE
{
mESCAPED_SINGLE_QUOTE();
@@ -218,8 +218,8 @@ public class CMISLexer extends Lexer {
try {
int _type = SELECT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:520:8: ( ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:520:10: ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:522:8: ( ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:522:10: ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' )
{
if ( input.LA(1)=='S'||input.LA(1)=='s' ) {
input.consume();
@@ -291,8 +291,8 @@ public class CMISLexer extends Lexer {
try {
int _type = AS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:521:4: ( ( 'A' | 'a' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:521:6: ( 'A' | 'a' ) ( 'S' | 's' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:523:4: ( ( 'A' | 'a' ) ( 'S' | 's' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:523:6: ( 'A' | 'a' ) ( 'S' | 's' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -328,8 +328,8 @@ public class CMISLexer extends Lexer {
try {
int _type = UPPER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:522:7: ( ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:522:9: ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:524:7: ( ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:524:9: ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='U'||input.LA(1)=='u' ) {
input.consume();
@@ -392,8 +392,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LOWER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:523:7: ( ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:523:9: ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:525:7: ( ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:525:9: ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -456,8 +456,8 @@ public class CMISLexer extends Lexer {
try {
int _type = FROM;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:524:6: ( ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:524:8: ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:526:6: ( ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:526:8: ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' )
{
if ( input.LA(1)=='F'||input.LA(1)=='f' ) {
input.consume();
@@ -511,8 +511,8 @@ public class CMISLexer extends Lexer {
try {
int _type = JOIN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:525:6: ( ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:525:8: ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:527:6: ( ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:527:8: ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' )
{
if ( input.LA(1)=='J'||input.LA(1)=='j' ) {
input.consume();
@@ -566,8 +566,8 @@ public class CMISLexer extends Lexer {
try {
int _type = INNER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:526:7: ( ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:526:9: ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:528:7: ( ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:528:9: ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -630,8 +630,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LEFT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:527:6: ( ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:527:8: ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:6: ( ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:8: ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -685,8 +685,8 @@ public class CMISLexer extends Lexer {
try {
int _type = OUTER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:528:7: ( ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:528:9: ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:530:7: ( ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:530:9: ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -749,8 +749,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ON;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:4: ( ( 'O' | 'o' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:6: ( 'O' | 'o' ) ( 'N' | 'n' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:4: ( ( 'O' | 'o' ) ( 'N' | 'n' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:6: ( 'O' | 'o' ) ( 'N' | 'n' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -786,8 +786,8 @@ public class CMISLexer extends Lexer {
try {
int _type = WHERE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:530:7: ( ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:530:9: ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:532:7: ( ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:532:9: ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' )
{
if ( input.LA(1)=='W'||input.LA(1)=='w' ) {
input.consume();
@@ -850,8 +850,8 @@ public class CMISLexer extends Lexer {
try {
int _type = OR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:6: ( 'O' | 'o' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:533:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:533:6: ( 'O' | 'o' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -887,8 +887,8 @@ public class CMISLexer extends Lexer {
try {
int _type = AND;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:532:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:532:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -933,8 +933,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:533:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:533:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:535:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:535:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
{
if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
input.consume();
@@ -979,8 +979,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:4: ( ( 'I' | 'i' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:6: ( 'I' | 'i' ) ( 'N' | 'n' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:4: ( ( 'I' | 'i' ) ( 'N' | 'n' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:6: ( 'I' | 'i' ) ( 'N' | 'n' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1016,8 +1016,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LIKE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:535:6: ( ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:535:8: ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:537:6: ( ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:537:8: ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -1071,8 +1071,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:4: ( ( 'I' | 'i' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:6: ( 'I' | 'i' ) ( 'S' | 's' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:538:4: ( ( 'I' | 'i' ) ( 'S' | 's' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:538:6: ( 'I' | 'i' ) ( 'S' | 's' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1108,8 +1108,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NULL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:537:6: ( ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:537:8: ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:539:6: ( ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:539:8: ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' )
{
if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
input.consume();
@@ -1163,8 +1163,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ANY;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:538:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:538:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:540:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:540:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -1209,8 +1209,8 @@ public class CMISLexer extends Lexer {
try {
int _type = CONTAINS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:539:9: ( ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:539:11: ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:541:9: ( ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:541:11: ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' )
{
if ( input.LA(1)=='C'||input.LA(1)=='c' ) {
input.consume();
@@ -1300,8 +1300,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN_FOLDER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:541:2: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:541:4: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:543:2: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:543:4: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1392,8 +1392,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN_TREE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:542:9: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:542:11: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:9: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:11: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1466,8 +1466,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ORDER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:543:7: ( ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:543:9: ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:545:7: ( ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:545:9: ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -1530,8 +1530,8 @@ public class CMISLexer extends Lexer {
try {
int _type = BY;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:4: ( ( 'B' | 'b' ) ( 'Y' | 'y' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:6: ( 'B' | 'b' ) ( 'Y' | 'y' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:546:4: ( ( 'B' | 'b' ) ( 'Y' | 'y' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:546:6: ( 'B' | 'b' ) ( 'Y' | 'y' )
{
if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
input.consume();
@@ -1567,8 +1567,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ASC;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:545:5: ( ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:545:7: ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:547:5: ( ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:547:7: ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -1613,8 +1613,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DESC;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:546:6: ( ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:546:8: ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:6: ( ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:8: ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' )
{
if ( input.LA(1)=='D'||input.LA(1)=='d' ) {
input.consume();
@@ -1668,8 +1668,8 @@ public class CMISLexer extends Lexer {
try {
int _type = SCORE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:547:7: ( ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:547:9: ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:7: ( ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:9: ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' )
{
if ( input.LA(1)=='S'||input.LA(1)=='s' ) {
input.consume();
@@ -1732,8 +1732,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:8: ( '(' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:10: '('
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:8: ( '(' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:10: '('
{
match('(');
@@ -1752,8 +1752,8 @@ public class CMISLexer extends Lexer {
try {
int _type = RPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:8: ( ')' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:10: ')'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:8: ( ')' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:10: ')'
{
match(')');
@@ -1772,8 +1772,8 @@ public class CMISLexer extends Lexer {
try {
int _type = STAR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:6: ( '*' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:8: '*'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:6: ( '*' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:8: '*'
{
match('*');
@@ -1792,8 +1792,8 @@ public class CMISLexer extends Lexer {
try {
int _type = COMMA;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:7: ( ',' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:9: ','
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:7: ( ',' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:9: ','
{
match(',');
@@ -1812,8 +1812,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOTSTAR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:9: ( '.*' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:11: '.*'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:9: ( '.*' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:11: '.*'
{
match(".*");
@@ -1833,8 +1833,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:5: ( '.' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:7: '.'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:5: ( '.' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:7: '.'
{
match('.');
@@ -1853,8 +1853,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOTDOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:8: ( '..' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:10: '..'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:8: ( '..' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:10: '..'
{
match("..");
@@ -1874,8 +1874,8 @@ public class CMISLexer extends Lexer {
try {
int _type = EQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:9: ( '=' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:11: '='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:557:9: ( '=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:557:11: '='
{
match('=');
@@ -1894,8 +1894,8 @@ public class CMISLexer extends Lexer {
try {
int _type = TILDA;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:7: ( '~' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:9: '~'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:7: ( '~' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:9: '~'
{
match('~');
@@ -1914,8 +1914,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NOTEQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:2: ( '<>' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:4: '<>'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:2: ( '<>' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:4: '<>'
{
match("<>");
@@ -1935,8 +1935,8 @@ public class CMISLexer extends Lexer {
try {
int _type = GREATERTHAN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:2: ( '>' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:4: '>'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:2: ( '>' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:4: '>'
{
match('>');
@@ -1955,8 +1955,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LESSTHAN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:2: ( '<' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:4: '<'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:2: ( '<' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:4: '<'
{
match('<');
@@ -1975,8 +1975,8 @@ public class CMISLexer extends Lexer {
try {
int _type = GREATERTHANOREQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:2: ( '>=' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:4: '>='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:2: ( '>=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:4: '>='
{
match(">=");
@@ -1996,8 +1996,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LESSTHANOREQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:2: ( '<=' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:4: '<='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:568:2: ( '<=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:568:4: '<='
{
match("<=");
@@ -2017,8 +2017,8 @@ public class CMISLexer extends Lexer {
try {
int _type = COLON;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:567:7: ( ':' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:567:9: ':'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:569:7: ( ':' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:569:9: ':'
{
match(':');
@@ -2037,8 +2037,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOUBLE_QUOTE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:570:2: ( '\"' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:570:4: '\"'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:572:2: ( '\"' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:572:4: '\"'
{
match('\"');
@@ -2057,10 +2057,10 @@ public class CMISLexer extends Lexer {
try {
int _type = DECIMAL_INTEGER_LITERAL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:578:9: ( ( PLUS | MINUS )? DECIMAL_NUMERAL )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:578:11: ( PLUS | MINUS )? DECIMAL_NUMERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:580:9: ( ( PLUS | MINUS )? DECIMAL_NUMERAL )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:580:11: ( PLUS | MINUS )? DECIMAL_NUMERAL
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:578:11: ( PLUS | MINUS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:580:11: ( PLUS | MINUS )?
int alt2=2;
int LA2_0 = input.LA(1);
@@ -2103,14 +2103,14 @@ public class CMISLexer extends Lexer {
try {
int _type = FLOATING_POINT_LITERAL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:2: ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:2: ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT )
int alt9=3;
alt9 = dfa9.predict(input);
switch (alt9) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )?
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+
int cnt3=0;
loop3:
do {
@@ -2124,7 +2124,7 @@ public class CMISLexer extends Lexer {
switch (alt3) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: DIGIT
{
mDIGIT();
@@ -2141,7 +2141,7 @@ public class CMISLexer extends Lexer {
} while (true);
mDOT();
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:15: ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:15: ( DIGIT )*
loop4:
do {
int alt4=2;
@@ -2154,7 +2154,7 @@ public class CMISLexer extends Lexer {
switch (alt4) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:15: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:15: DIGIT
{
mDIGIT();
@@ -2166,7 +2166,7 @@ public class CMISLexer extends Lexer {
}
} while (true);
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:22: ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:22: ( EXPONENT )?
int alt5=2;
int LA5_0 = input.LA(1);
@@ -2175,7 +2175,7 @@ public class CMISLexer extends Lexer {
}
switch (alt5) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:22: EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:22: EXPONENT
{
mEXPONENT();
@@ -2188,10 +2188,10 @@ public class CMISLexer extends Lexer {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:4: DOT ( DIGIT )+ ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:588:4: DOT ( DIGIT )+ ( EXPONENT )?
{
mDOT();
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:8: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:588:8: ( DIGIT )+
int cnt6=0;
loop6:
do {
@@ -2205,7 +2205,7 @@ public class CMISLexer extends Lexer {
switch (alt6) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:8: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:588:8: DIGIT
{
mDIGIT();
@@ -2221,7 +2221,7 @@ public class CMISLexer extends Lexer {
cnt6++;
} while (true);
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:15: ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:588:15: ( EXPONENT )?
int alt7=2;
int LA7_0 = input.LA(1);
@@ -2230,7 +2230,7 @@ public class CMISLexer extends Lexer {
}
switch (alt7) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:15: EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:588:15: EXPONENT
{
mEXPONENT();
@@ -2243,9 +2243,9 @@ public class CMISLexer extends Lexer {
}
break;
case 3 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+ EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:589:4: ( DIGIT )+ EXPONENT
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:589:4: ( DIGIT )+
int cnt8=0;
loop8:
do {
@@ -2259,7 +2259,7 @@ public class CMISLexer extends Lexer {
switch (alt8) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:589:4: DIGIT
{
mDIGIT();
@@ -2294,8 +2294,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:591:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:591:6: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:593:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:593: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();
@@ -2306,7 +2306,7 @@ public class CMISLexer extends Lexer {
recover(mse);
throw mse;}
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:591:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:593:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
loop10:
do {
int alt10=2;
@@ -2355,10 +2355,10 @@ public class CMISLexer extends Lexer {
try {
int _type = WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:594:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:594:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:594:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt11=0;
loop11:
do {
@@ -2411,7 +2411,7 @@ public class CMISLexer extends Lexer {
// $ANTLR start DECIMAL_NUMERAL
public final void mDECIMAL_NUMERAL() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:601:2: ( ZERO_DIGIT | NON_ZERO_DIGIT ( DIGIT )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:603:2: ( ZERO_DIGIT | NON_ZERO_DIGIT ( DIGIT )* )
int alt13=2;
int LA13_0 = input.LA(1);
@@ -2429,17 +2429,17 @@ public class CMISLexer extends Lexer {
}
switch (alt13) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:601:4: ZERO_DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:603:4: ZERO_DIGIT
{
mZERO_DIGIT();
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:4: NON_ZERO_DIGIT ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:604:4: NON_ZERO_DIGIT ( DIGIT )*
{
mNON_ZERO_DIGIT();
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:19: ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:604:19: ( DIGIT )*
loop12:
do {
int alt12=2;
@@ -2452,7 +2452,7 @@ public class CMISLexer extends Lexer {
switch (alt12) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:19: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:604:19: DIGIT
{
mDIGIT();
@@ -2478,7 +2478,7 @@ public class CMISLexer extends Lexer {
// $ANTLR start DIGIT
public final void mDIGIT() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:605:7: ( ZERO_DIGIT | NON_ZERO_DIGIT )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:607:7: ( ZERO_DIGIT | NON_ZERO_DIGIT )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( (input.LA(1)>='0' && input.LA(1)<='9') ) {
@@ -2502,8 +2502,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start ZERO_DIGIT
public final void mZERO_DIGIT() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:608:2: ( '0' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:608:4: '0'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:610:2: ( '0' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:610:4: '0'
{
match('0');
@@ -2518,8 +2518,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start NON_ZERO_DIGIT
public final void mNON_ZERO_DIGIT() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:611:2: ( '1' .. '9' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:611:4: '1' .. '9'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:2: ( '1' .. '9' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:4: '1' .. '9'
{
matchRange('1','9');
@@ -2534,8 +2534,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start PLUS
public final void mPLUS() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:6: ( '+' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:8: '+'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:6: ( '+' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:8: '+'
{
match('+');
@@ -2550,8 +2550,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start MINUS
public final void mMINUS() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:7: ( '-' )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:9: '-'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:617:7: ( '-' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:617:9: '-'
{
match('-');
@@ -2566,8 +2566,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start E
public final void mE() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:618:3: ( ( 'e' | 'E' ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:618:5: ( 'e' | 'E' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:620:3: ( ( 'e' | 'E' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:620:5: ( 'e' | 'E' )
{
if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
input.consume();
@@ -2590,8 +2590,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start EXPONENT
public final void mEXPONENT() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:629:2: ( E SIGNED_INTEGER )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:629:4: E SIGNED_INTEGER
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:631:2: ( E SIGNED_INTEGER )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:631:4: E SIGNED_INTEGER
{
mE();
mSIGNED_INTEGER();
@@ -2607,10 +2607,10 @@ public class CMISLexer extends Lexer {
// $ANTLR start SIGNED_INTEGER
public final void mSIGNED_INTEGER() throws RecognitionException {
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:2: ( ( PLUS | MINUS )? ( DIGIT )+ )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:4: ( PLUS | MINUS )? ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:635:2: ( ( PLUS | MINUS )? ( DIGIT )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:635:4: ( PLUS | MINUS )? ( DIGIT )+
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:4: ( PLUS | MINUS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:635:4: ( PLUS | MINUS )?
int alt14=2;
int LA14_0 = input.LA(1);
@@ -2636,7 +2636,7 @@ public class CMISLexer extends Lexer {
}
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:20: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:635:20: ( DIGIT )+
int cnt15=0;
loop15:
do {
@@ -2650,7 +2650,7 @@ public class CMISLexer extends Lexer {
switch (alt15) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:20: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:635:20: DIGIT
{
mDIGIT();
@@ -3081,7 +3081,7 @@ public class CMISLexer extends Lexer {
this.transition = DFA9_transition;
}
public String getDescription() {
- return "584:1: FLOATING_POINT_LITERAL : ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT );";
+ return "586:1: FLOATING_POINT_LITERAL : ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT );";
}
}
static final String DFA16_eotS =
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 ed45808479..1996216852 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-cmis2\\ANTLR\\CMIS.g 2008-07-21 10:14:45
+// $ANTLR 3.1b1 W:\\workspace-cmis2\\ANTLR\\CMIS.g 2008-07-29 14:25:59
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -278,7 +278,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: fromClause, selectList, whereClause, orderByClause
+ // elements: whereClause, selectList, fromClause, orderByClause
// token labels:
// rule labels: retval
// token list labels:
@@ -715,7 +715,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: valueExpression, columnName
+ // elements: columnName, valueExpression
// token labels:
// rule labels: retval
// token list labels:
@@ -869,12 +869,12 @@ public class CMISParser extends Parser {
{
int LA8_1 = input.LA(2);
- if ( (LA8_1==EOF||(LA8_1>=COMMA && LA8_1<=AS)||LA8_1==DOT||LA8_1==FROM||LA8_1==EQUALS||(LA8_1>=NOTEQUALS && LA8_1<=GREATERTHANOREQUALS)||(LA8_1>=ID && LA8_1<=DOUBLE_QUOTE)) ) {
- alt8=1;
- }
- else if ( (LA8_1==LPAREN) ) {
+ if ( (LA8_1==LPAREN) ) {
alt8=2;
}
+ else if ( (LA8_1==EOF||(LA8_1>=COMMA && LA8_1<=AS)||LA8_1==DOT||LA8_1==FROM||LA8_1==EQUALS||(LA8_1>=NOTEQUALS && LA8_1<=GREATERTHANOREQUALS)||(LA8_1>=ID && LA8_1<=DOUBLE_QUOTE)) ) {
+ alt8=1;
+ }
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
@@ -1104,7 +1104,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: qualifier, columnName
+ // elements: columnName, qualifier
// token labels:
// rule labels: retval
// token list labels:
@@ -1306,7 +1306,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start valueFunction
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:194:1: valueFunction : functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName ( functionArgument )* ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:194:1: valueFunction : functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName LPAREN ( functionArgument )* RPAREN ) ;
public final CMISParser.valueFunction_return valueFunction() throws RecognitionException {
CMISParser.valueFunction_return retval = new CMISParser.valueFunction_return();
retval.start = input.LT(1);
@@ -1327,7 +1327,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_keyWordOrId=new RewriteRuleSubtreeStream(adaptor,"rule keyWordOrId");
RewriteRuleSubtreeStream stream_functionArgument=new RewriteRuleSubtreeStream(adaptor,"rule functionArgument");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:2: (functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName ( functionArgument )* ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:2: (functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName LPAREN ( functionArgument )* RPAREN ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:4: functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN
{
pushFollow(FOLLOW_keyWordOrId_in_valueFunction470);
@@ -1375,7 +1375,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: functionName, functionArgument
+ // elements: LPAREN, RPAREN, functionName, functionArgument
// token labels:
// rule labels: retval, functionName
// token list labels:
@@ -1386,20 +1386,22 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_functionName=new RewriteRuleSubtreeStream(adaptor,"token functionName",functionName!=null?functionName.tree:null);
root_0 = (Object)adaptor.nil();
- // 196:3: -> ^( FUNCTION $functionName ( functionArgument )* )
+ // 196:3: -> ^( FUNCTION $functionName LPAREN ( functionArgument )* RPAREN )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:6: ^( FUNCTION $functionName ( functionArgument )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:6: ^( FUNCTION $functionName LPAREN ( functionArgument )* RPAREN )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNCTION, "FUNCTION"), root_1);
adaptor.addChild(root_1, stream_functionName.nextTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:31: ( functionArgument )*
+ adaptor.addChild(root_1, stream_LPAREN.nextNode());
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:38: ( functionArgument )*
while ( stream_functionArgument.hasNext() ) {
adaptor.addChild(root_1, stream_functionArgument.nextTree());
}
stream_functionArgument.reset();
+ adaptor.addChild(root_1, stream_RPAREN.nextNode());
adaptor.addChild(root_0, root_1);
}
@@ -1567,16 +1569,16 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:200:9: qualifier DOT columnName
{
- pushFollow(FOLLOW_qualifier_in_functionArgument508);
+ pushFollow(FOLLOW_qualifier_in_functionArgument512);
qualifier28=qualifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_qualifier.add(qualifier28.getTree());
- DOT29=(Token)match(input,DOT,FOLLOW_DOT_in_functionArgument510); if (state.failed) return retval;
+ DOT29=(Token)match(input,DOT,FOLLOW_DOT_in_functionArgument514); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DOT.add(DOT29);
- pushFollow(FOLLOW_columnName_in_functionArgument512);
+ pushFollow(FOLLOW_columnName_in_functionArgument516);
columnName30=columnName();
state._fsp--;
@@ -1585,7 +1587,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: qualifier, columnName
+ // elements: columnName, qualifier
// token labels:
// rule labels: retval
// token list labels:
@@ -1618,7 +1620,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_identifier_in_functionArgument536);
+ pushFollow(FOLLOW_identifier_in_functionArgument540);
identifier31=identifier();
state._fsp--;
@@ -1632,7 +1634,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_literalOrParameterName_in_functionArgument546);
+ pushFollow(FOLLOW_literalOrParameterName_in_functionArgument550);
literalOrParameterName32=literalOrParameterName();
state._fsp--;
@@ -1782,7 +1784,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:4: ( tableName )=> tableName
{
- pushFollow(FOLLOW_tableName_in_qualifier567);
+ pushFollow(FOLLOW_tableName_in_qualifier571);
tableName33=tableName();
state._fsp--;
@@ -1813,7 +1815,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:209:5: correlationName
{
- pushFollow(FOLLOW_correlationName_in_qualifier579);
+ pushFollow(FOLLOW_correlationName_in_qualifier583);
correlationName34=correlationName();
state._fsp--;
@@ -1887,10 +1889,10 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:216:2: ( FROM tableReference -> tableReference )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:216:4: FROM tableReference
{
- FROM35=(Token)match(input,FROM,FOLLOW_FROM_in_fromClause616); if (state.failed) return retval;
+ FROM35=(Token)match(input,FROM,FOLLOW_FROM_in_fromClause620); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_FROM.add(FROM35);
- pushFollow(FOLLOW_tableReference_in_fromClause618);
+ pushFollow(FOLLOW_tableReference_in_fromClause622);
tableReference36=tableReference();
state._fsp--;
@@ -1964,7 +1966,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:2: ( singleTable ( ( joinedTable )=> joinedTable )* -> ^( SOURCE singleTable ( joinedTable )* ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:4: singleTable ( ( joinedTable )=> joinedTable )*
{
- pushFollow(FOLLOW_singleTable_in_tableReference636);
+ pushFollow(FOLLOW_singleTable_in_tableReference640);
singleTable37=singleTable();
state._fsp--;
@@ -2015,7 +2017,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:17: ( joinedTable )=> joinedTable
{
- pushFollow(FOLLOW_joinedTable_in_tableReference645);
+ pushFollow(FOLLOW_joinedTable_in_tableReference649);
joinedTable38=joinedTable();
state._fsp--;
@@ -2139,7 +2141,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:4: tableName ( ( AS )? correlationName )?
{
- pushFollow(FOLLOW_tableName_in_singleTable674);
+ pushFollow(FOLLOW_tableName_in_singleTable678);
tableName39=tableName();
state._fsp--;
@@ -2167,7 +2169,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:16: AS
{
- AS40=(Token)match(input,AS,FOLLOW_AS_in_singleTable678); if (state.failed) return retval;
+ AS40=(Token)match(input,AS,FOLLOW_AS_in_singleTable682); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_AS.add(AS40);
@@ -2176,7 +2178,7 @@ public class CMISParser extends Parser {
}
- pushFollow(FOLLOW_correlationName_in_singleTable681);
+ pushFollow(FOLLOW_correlationName_in_singleTable685);
correlationName41=correlationName();
state._fsp--;
@@ -2227,16 +2229,16 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:231:4: LPAREN joinedTables RPAREN
{
- LPAREN42=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_singleTable702); if (state.failed) return retval;
+ LPAREN42=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_singleTable706); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN42);
- pushFollow(FOLLOW_joinedTables_in_singleTable704);
+ pushFollow(FOLLOW_joinedTables_in_singleTable708);
joinedTables43=joinedTables();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_joinedTables.add(joinedTables43.getTree());
- RPAREN44=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_singleTable706); if (state.failed) return retval;
+ RPAREN44=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_singleTable710); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN44);
@@ -2331,7 +2333,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:4: joinType
{
- pushFollow(FOLLOW_joinType_in_joinedTable728);
+ pushFollow(FOLLOW_joinType_in_joinedTable732);
joinType45=joinType();
state._fsp--;
@@ -2343,10 +2345,10 @@ public class CMISParser extends Parser {
}
- JOIN46=(Token)match(input,JOIN,FOLLOW_JOIN_in_joinedTable731); if (state.failed) return retval;
+ JOIN46=(Token)match(input,JOIN,FOLLOW_JOIN_in_joinedTable735); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_JOIN.add(JOIN46);
- pushFollow(FOLLOW_tableReference_in_joinedTable733);
+ pushFollow(FOLLOW_tableReference_in_joinedTable737);
tableReference47=tableReference();
state._fsp--;
@@ -2367,7 +2369,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:35: ( joinSpecification )=> joinSpecification
{
- pushFollow(FOLLOW_joinSpecification_in_joinedTable742);
+ pushFollow(FOLLOW_joinSpecification_in_joinedTable746);
joinSpecification48=joinSpecification();
state._fsp--;
@@ -2382,7 +2384,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: JOIN, joinSpecification, tableReference, joinType
+ // elements: tableReference, joinSpecification, JOIN, joinType
// token labels:
// rule labels: retval
// token list labels:
@@ -2464,7 +2466,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:242:2: ( singleTable ( joinedTable )+ -> ^( SOURCE singleTable ( joinedTable )+ ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:242:4: singleTable ( joinedTable )+
{
- pushFollow(FOLLOW_singleTable_in_joinedTables773);
+ pushFollow(FOLLOW_singleTable_in_joinedTables777);
singleTable49=singleTable();
state._fsp--;
@@ -2486,7 +2488,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:242:16: joinedTable
{
- pushFollow(FOLLOW_joinedTable_in_joinedTables775);
+ pushFollow(FOLLOW_joinedTable_in_joinedTables779);
joinedTable50=joinedTable();
state._fsp--;
@@ -2509,7 +2511,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: singleTable, joinedTable
+ // elements: joinedTable, singleTable
// token labels:
// rule labels: retval
// token list labels:
@@ -2609,7 +2611,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:247:4: INNER
{
- INNER51=(Token)match(input,INNER,FOLLOW_INNER_in_joinType802); if (state.failed) return retval;
+ INNER51=(Token)match(input,INNER,FOLLOW_INNER_in_joinType806); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_INNER.add(INNER51);
@@ -2637,7 +2639,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:5: LEFT ( OUTER )?
{
- LEFT52=(Token)match(input,LEFT,FOLLOW_LEFT_in_joinType814); if (state.failed) return retval;
+ LEFT52=(Token)match(input,LEFT,FOLLOW_LEFT_in_joinType818); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LEFT.add(LEFT52);
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:10: ( OUTER )?
@@ -2651,7 +2653,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:10: OUTER
{
- OUTER53=(Token)match(input,OUTER,FOLLOW_OUTER_in_joinType816); if (state.failed) return retval;
+ OUTER53=(Token)match(input,OUTER,FOLLOW_OUTER_in_joinType820); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OUTER.add(OUTER53);
@@ -2738,34 +2740,34 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:254:2: ( ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN -> ^( ON $lhs EQUALS $rhs) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:254:4: ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN
{
- ON54=(Token)match(input,ON,FOLLOW_ON_in_joinSpecification836); if (state.failed) return retval;
+ ON54=(Token)match(input,ON,FOLLOW_ON_in_joinSpecification840); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ON.add(ON54);
- LPAREN55=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_joinSpecification838); if (state.failed) return retval;
+ LPAREN55=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_joinSpecification842); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN55);
- pushFollow(FOLLOW_columnReference_in_joinSpecification842);
+ pushFollow(FOLLOW_columnReference_in_joinSpecification846);
lhs=columnReference();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_columnReference.add(lhs.getTree());
- EQUALS56=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_joinSpecification844); if (state.failed) return retval;
+ EQUALS56=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_joinSpecification848); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS56);
- pushFollow(FOLLOW_columnReference_in_joinSpecification848);
+ pushFollow(FOLLOW_columnReference_in_joinSpecification852);
rhs=columnReference();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_columnReference.add(rhs.getTree());
- RPAREN57=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_joinSpecification850); if (state.failed) return retval;
+ RPAREN57=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_joinSpecification854); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN57);
// AST REWRITE
- // elements: ON, EQUALS, rhs, lhs
+ // elements: rhs, ON, lhs, EQUALS
// token labels:
// rule labels: retval, rhs, lhs
// token list labels:
@@ -2840,10 +2842,10 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:265:2: ( WHERE searchOrCondition -> searchOrCondition )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:265:4: WHERE searchOrCondition
{
- WHERE58=(Token)match(input,WHERE,FOLLOW_WHERE_in_whereClause900); if (state.failed) return retval;
+ WHERE58=(Token)match(input,WHERE,FOLLOW_WHERE_in_whereClause904); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_WHERE.add(WHERE58);
- pushFollow(FOLLOW_searchOrCondition_in_whereClause902);
+ pushFollow(FOLLOW_searchOrCondition_in_whereClause906);
searchOrCondition59=searchOrCondition();
state._fsp--;
@@ -2919,7 +2921,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:273:2: ( searchAndCondition ( OR searchAndCondition )* -> ^( DISJUNCTION ( searchAndCondition )+ ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:273:4: searchAndCondition ( OR searchAndCondition )*
{
- pushFollow(FOLLOW_searchAndCondition_in_searchOrCondition922);
+ pushFollow(FOLLOW_searchAndCondition_in_searchOrCondition926);
searchAndCondition60=searchAndCondition();
state._fsp--;
@@ -2940,10 +2942,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:273:24: OR searchAndCondition
{
- OR61=(Token)match(input,OR,FOLLOW_OR_in_searchOrCondition925); if (state.failed) return retval;
+ OR61=(Token)match(input,OR,FOLLOW_OR_in_searchOrCondition929); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OR.add(OR61);
- pushFollow(FOLLOW_searchAndCondition_in_searchOrCondition927);
+ pushFollow(FOLLOW_searchAndCondition_in_searchOrCondition931);
searchAndCondition62=searchAndCondition();
state._fsp--;
@@ -3040,7 +3042,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:282:2: ( searchNotCondition ( AND searchNotCondition )* -> ^( CONJUNCTION ( searchNotCondition )+ ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:282:4: searchNotCondition ( AND searchNotCondition )*
{
- pushFollow(FOLLOW_searchNotCondition_in_searchAndCondition955);
+ pushFollow(FOLLOW_searchNotCondition_in_searchAndCondition959);
searchNotCondition63=searchNotCondition();
state._fsp--;
@@ -3061,10 +3063,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:282:24: AND searchNotCondition
{
- AND64=(Token)match(input,AND,FOLLOW_AND_in_searchAndCondition958); if (state.failed) return retval;
+ AND64=(Token)match(input,AND,FOLLOW_AND_in_searchAndCondition962); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_AND.add(AND64);
- pushFollow(FOLLOW_searchNotCondition_in_searchAndCondition960);
+ pushFollow(FOLLOW_searchNotCondition_in_searchAndCondition964);
searchNotCondition65=searchNotCondition();
state._fsp--;
@@ -3165,10 +3167,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:287:4: NOT searchTest
{
- NOT66=(Token)match(input,NOT,FOLLOW_NOT_in_searchNotCondition987); if (state.failed) return retval;
+ NOT66=(Token)match(input,NOT,FOLLOW_NOT_in_searchNotCondition991); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT66);
- pushFollow(FOLLOW_searchTest_in_searchNotCondition989);
+ pushFollow(FOLLOW_searchTest_in_searchNotCondition993);
searchTest67=searchTest();
state._fsp--;
@@ -3207,7 +3209,7 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:289:4: searchTest
{
- pushFollow(FOLLOW_searchTest_in_searchNotCondition1004);
+ pushFollow(FOLLOW_searchTest_in_searchNotCondition1008);
searchTest68=searchTest();
state._fsp--;
@@ -3304,7 +3306,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:294:4: predicate
{
- pushFollow(FOLLOW_predicate_in_searchTest1022);
+ pushFollow(FOLLOW_predicate_in_searchTest1026);
predicate69=predicate();
state._fsp--;
@@ -3335,16 +3337,16 @@ public class CMISParser extends Parser {
case 2 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:296:4: LPAREN searchOrCondition RPAREN
{
- LPAREN70=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_searchTest1033); if (state.failed) return retval;
+ LPAREN70=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_searchTest1037); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN70);
- pushFollow(FOLLOW_searchOrCondition_in_searchTest1035);
+ pushFollow(FOLLOW_searchOrCondition_in_searchTest1039);
searchOrCondition71=searchOrCondition();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_searchOrCondition.add(searchOrCondition71.getTree());
- RPAREN72=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_searchTest1037); if (state.failed) return retval;
+ RPAREN72=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_searchTest1041); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN72);
@@ -3431,7 +3433,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_comparisonPredicate_in_predicate1054);
+ pushFollow(FOLLOW_comparisonPredicate_in_predicate1058);
comparisonPredicate73=comparisonPredicate();
state._fsp--;
@@ -3445,7 +3447,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_inPredicate_in_predicate1059);
+ pushFollow(FOLLOW_inPredicate_in_predicate1063);
inPredicate74=inPredicate();
state._fsp--;
@@ -3459,7 +3461,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_likePredicate_in_predicate1064);
+ pushFollow(FOLLOW_likePredicate_in_predicate1068);
likePredicate75=likePredicate();
state._fsp--;
@@ -3473,7 +3475,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_nullPredicate_in_predicate1069);
+ pushFollow(FOLLOW_nullPredicate_in_predicate1073);
nullPredicate76=nullPredicate();
state._fsp--;
@@ -3487,7 +3489,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_quantifiedComparisonPredicate_in_predicate1075);
+ pushFollow(FOLLOW_quantifiedComparisonPredicate_in_predicate1079);
quantifiedComparisonPredicate77=quantifiedComparisonPredicate();
state._fsp--;
@@ -3501,7 +3503,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_quantifiedInPredicate_in_predicate1080);
+ pushFollow(FOLLOW_quantifiedInPredicate_in_predicate1084);
quantifiedInPredicate78=quantifiedInPredicate();
state._fsp--;
@@ -3515,7 +3517,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_textSearchPredicate_in_predicate1085);
+ pushFollow(FOLLOW_textSearchPredicate_in_predicate1089);
textSearchPredicate79=textSearchPredicate();
state._fsp--;
@@ -3529,7 +3531,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_folderPredicate_in_predicate1090);
+ pushFollow(FOLLOW_folderPredicate_in_predicate1094);
folderPredicate80=folderPredicate();
state._fsp--;
@@ -3586,19 +3588,19 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:312:2: ( valueExpression compOp literalOrParameterName -> ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:312:4: valueExpression compOp literalOrParameterName
{
- pushFollow(FOLLOW_valueExpression_in_comparisonPredicate1102);
+ pushFollow(FOLLOW_valueExpression_in_comparisonPredicate1106);
valueExpression81=valueExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_valueExpression.add(valueExpression81.getTree());
- pushFollow(FOLLOW_compOp_in_comparisonPredicate1104);
+ pushFollow(FOLLOW_compOp_in_comparisonPredicate1108);
compOp82=compOp();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_compOp.add(compOp82.getTree());
- pushFollow(FOLLOW_literalOrParameterName_in_comparisonPredicate1106);
+ pushFollow(FOLLOW_literalOrParameterName_in_comparisonPredicate1110);
literalOrParameterName83=literalOrParameterName();
state._fsp--;
@@ -3607,7 +3609,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: compOp, literalOrParameterName, valueExpression
+ // elements: valueExpression, compOp, literalOrParameterName
// token labels:
// rule labels: retval
// token list labels:
@@ -3756,7 +3758,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_literal_in_literalOrParameterName1172);
+ pushFollow(FOLLOW_literal_in_literalOrParameterName1176);
literal85=literal();
state._fsp--;
@@ -3770,7 +3772,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_parameterName_in_literalOrParameterName1177);
+ pushFollow(FOLLOW_parameterName_in_literalOrParameterName1181);
parameterName86=parameterName();
state._fsp--;
@@ -3843,7 +3845,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_signedNumericLiteral_in_literal1190);
+ pushFollow(FOLLOW_signedNumericLiteral_in_literal1194);
signedNumericLiteral87=signedNumericLiteral();
state._fsp--;
@@ -3857,7 +3859,7 @@ public class CMISParser extends Parser {
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_characterStringLiteral_in_literal1195);
+ pushFollow(FOLLOW_characterStringLiteral_in_literal1199);
characterStringLiteral88=characterStringLiteral();
state._fsp--;
@@ -3923,7 +3925,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:336:2: ( columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:336:4: columnReference ( NOT )? IN LPAREN inValueList RPAREN
{
- pushFollow(FOLLOW_columnReference_in_inPredicate1207);
+ pushFollow(FOLLOW_columnReference_in_inPredicate1211);
columnReference89=columnReference();
state._fsp--;
@@ -3940,7 +3942,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:336:20: NOT
{
- NOT90=(Token)match(input,NOT,FOLLOW_NOT_in_inPredicate1209); if (state.failed) return retval;
+ NOT90=(Token)match(input,NOT,FOLLOW_NOT_in_inPredicate1213); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT90);
@@ -3949,25 +3951,25 @@ public class CMISParser extends Parser {
}
- IN91=(Token)match(input,IN,FOLLOW_IN_in_inPredicate1212); if (state.failed) return retval;
+ IN91=(Token)match(input,IN,FOLLOW_IN_in_inPredicate1216); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IN.add(IN91);
- LPAREN92=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_inPredicate1214); if (state.failed) return retval;
+ LPAREN92=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_inPredicate1218); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN92);
- pushFollow(FOLLOW_inValueList_in_inPredicate1216);
+ pushFollow(FOLLOW_inValueList_in_inPredicate1220);
inValueList93=inValueList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_inValueList.add(inValueList93.getTree());
- RPAREN94=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_inPredicate1218); if (state.failed) return retval;
+ RPAREN94=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_inPredicate1222); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN94);
// AST REWRITE
- // elements: columnReference, inValueList, NOT
+ // elements: columnReference, NOT, inValueList
// token labels:
// rule labels: retval
// token list labels:
@@ -4047,7 +4049,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:341:2: ( literalOrParameterName ( COMMA literalOrParameterName )* -> ^( LIST ( literalOrParameterName )+ ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:341:4: literalOrParameterName ( COMMA literalOrParameterName )*
{
- pushFollow(FOLLOW_literalOrParameterName_in_inValueList1247);
+ pushFollow(FOLLOW_literalOrParameterName_in_inValueList1251);
literalOrParameterName95=literalOrParameterName();
state._fsp--;
@@ -4068,10 +4070,10 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:341:28: COMMA literalOrParameterName
{
- COMMA96=(Token)match(input,COMMA,FOLLOW_COMMA_in_inValueList1250); if (state.failed) return retval;
+ COMMA96=(Token)match(input,COMMA,FOLLOW_COMMA_in_inValueList1254); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA96);
- pushFollow(FOLLOW_literalOrParameterName_in_inValueList1252);
+ pushFollow(FOLLOW_literalOrParameterName_in_inValueList1256);
literalOrParameterName97=literalOrParameterName();
state._fsp--;
@@ -4172,7 +4174,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:346:2: ( columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:346:4: columnReference ( NOT )? LIKE characterStringLiteral
{
- pushFollow(FOLLOW_columnReference_in_likePredicate1278);
+ pushFollow(FOLLOW_columnReference_in_likePredicate1282);
columnReference98=columnReference();
state._fsp--;
@@ -4189,7 +4191,7 @@ public class CMISParser extends Parser {
case 1 :
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:346:20: NOT
{
- NOT99=(Token)match(input,NOT,FOLLOW_NOT_in_likePredicate1280); if (state.failed) return retval;
+ NOT99=(Token)match(input,NOT,FOLLOW_NOT_in_likePredicate1284); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT99);
@@ -4198,10 +4200,10 @@ public class CMISParser extends Parser {
}
- LIKE100=(Token)match(input,LIKE,FOLLOW_LIKE_in_likePredicate1283); if (state.failed) return retval;
+ LIKE100=(Token)match(input,LIKE,FOLLOW_LIKE_in_likePredicate1287); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LIKE.add(LIKE100);
- pushFollow(FOLLOW_characterStringLiteral_in_likePredicate1285);
+ pushFollow(FOLLOW_characterStringLiteral_in_likePredicate1289);
characterStringLiteral101=characterStringLiteral();
state._fsp--;
@@ -4210,7 +4212,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: characterStringLiteral, NOT, columnReference
+ // elements: columnReference, characterStringLiteral, NOT
// token labels:
// rule labels: retval
// token list labels:
@@ -4269,7 +4271,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start nullPredicate
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:350:1: nullPredicate : ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS ( NOT )? NULL -> ^( PRED_EXISTS columnReference ( NOT )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:350:1: nullPredicate : ( ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NULL -> ^( PRED_EXISTS columnReference NOT ) | ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NOT NULL -> ^( PRED_EXISTS columnReference ) );
public final CMISParser.nullPredicate_return nullPredicate() throws RecognitionException {
CMISParser.nullPredicate_return retval = new CMISParser.nullPredicate_return();
retval.start = input.LT(1);
@@ -4277,210 +4279,364 @@ public class CMISParser extends Parser {
Object root_0 = null;
Token IS104=null;
- Token NOT105=null;
- Token NULL106=null;
+ Token NULL105=null;
+ Token IS108=null;
+ Token NOT109=null;
+ Token NULL110=null;
CMISParser.columnReference_return columnReference102 = null;
CMISParser.multiValuedColumnReference_return multiValuedColumnReference103 = null;
+ CMISParser.columnReference_return columnReference106 = null;
+
+ CMISParser.multiValuedColumnReference_return multiValuedColumnReference107 = null;
+
Object IS104_tree=null;
- Object NOT105_tree=null;
- Object NULL106_tree=null;
+ Object NULL105_tree=null;
+ Object IS108_tree=null;
+ Object NOT109_tree=null;
+ Object NULL110_tree=null;
RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
RewriteRuleTokenStream stream_IS=new RewriteRuleTokenStream(adaptor,"token IS");
RewriteRuleTokenStream stream_NULL=new RewriteRuleTokenStream(adaptor,"token NULL");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:2: ( ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS ( NOT )? NULL -> ^( PRED_EXISTS columnReference ( NOT )? ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS ( NOT )? NULL
- {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference )
- int alt33=2;
- int LA33_0 = input.LA(1);
-
- if ( (LA33_0==ID) ) {
- int LA33_1 = input.LA(2);
-
- if ( (synpred5_CMIS()) ) {
- alt33=1;
- }
- else if ( (true) ) {
- alt33=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 1, input);
-
- throw nvae;
- }
- }
- else if ( (LA33_0==DOUBLE_QUOTE) ) {
- int LA33_2 = input.LA(2);
-
- if ( (LA33_2==SELECT||LA33_2==AS||(LA33_2>=FROM && LA33_2<=ON)||(LA33_2>=WHERE && LA33_2<=NOT)||(LA33_2>=IN && LA33_2<=DESC)||(LA33_2>=UPPER && LA33_2<=SCORE)) ) {
- int LA33_5 = input.LA(3);
-
- if ( (LA33_5==DOUBLE_QUOTE) ) {
- int LA33_7 = input.LA(4);
-
- if ( (synpred5_CMIS()) ) {
- alt33=1;
- }
- else if ( (true) ) {
- alt33=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 7, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 5, input);
-
- throw nvae;
- }
- }
- else if ( (LA33_2==ID) ) {
- int LA33_6 = input.LA(3);
-
- if ( (LA33_6==DOUBLE_QUOTE) ) {
- int LA33_7 = input.LA(4);
-
- if ( (synpred5_CMIS()) ) {
- alt33=1;
- }
- else if ( (true) ) {
- alt33=2;
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 7, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 6, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 2, input);
-
- throw nvae;
- }
- }
- else {
- if (state.backtracking>0) {state.failed=true; return retval;}
- NoViableAltException nvae =
- new NoViableAltException("", 33, 0, input);
-
- throw nvae;
- }
- switch (alt33) {
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:2: ( ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NULL -> ^( PRED_EXISTS columnReference NOT ) | ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NOT NULL -> ^( PRED_EXISTS columnReference ) )
+ int alt35=2;
+ alt35 = dfa35.predict(input);
+ switch (alt35) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:6: ( columnReference )=> columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NULL
{
- pushFollow(FOLLOW_columnReference_in_nullPredicate1319);
- columnReference102=columnReference();
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference )
+ int alt33=2;
+ int LA33_0 = input.LA(1);
- state._fsp--;
- if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_columnReference.add(columnReference102.getTree());
+ if ( (LA33_0==ID) ) {
+ int LA33_1 = input.LA(2);
+ if ( (synpred5_CMIS()) ) {
+ alt33=1;
+ }
+ else if ( (true) ) {
+ alt33=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 1, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA33_0==DOUBLE_QUOTE) ) {
+ int LA33_2 = input.LA(2);
+
+ if ( (LA33_2==SELECT||LA33_2==AS||(LA33_2>=FROM && LA33_2<=ON)||(LA33_2>=WHERE && LA33_2<=NOT)||(LA33_2>=IN && LA33_2<=DESC)||(LA33_2>=UPPER && LA33_2<=SCORE)) ) {
+ int LA33_5 = input.LA(3);
+
+ if ( (LA33_5==DOUBLE_QUOTE) ) {
+ int LA33_7 = input.LA(4);
+
+ if ( (synpred5_CMIS()) ) {
+ alt33=1;
+ }
+ else if ( (true) ) {
+ alt33=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 7, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 5, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA33_2==ID) ) {
+ int LA33_6 = input.LA(3);
+
+ if ( (LA33_6==DOUBLE_QUOTE) ) {
+ int LA33_7 = input.LA(4);
+
+ if ( (synpred5_CMIS()) ) {
+ alt33=1;
+ }
+ else if ( (true) ) {
+ alt33=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 7, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 6, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 2, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 33, 0, input);
+
+ throw nvae;
+ }
+ switch (alt33) {
+ case 1 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:6: ( columnReference )=> columnReference
+ {
+ pushFollow(FOLLOW_columnReference_in_nullPredicate1323);
+ columnReference102=columnReference();
+
+ state._fsp--;
+ if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference102.getTree());
+
+ }
+ break;
+ case 2 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:44: multiValuedColumnReference
+ {
+ pushFollow(FOLLOW_multiValuedColumnReference_in_nullPredicate1327);
+ multiValuedColumnReference103=multiValuedColumnReference();
+
+ state._fsp--;
+ if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference103.getTree());
+
+ }
+ break;
+
+ }
+
+ IS104=(Token)match(input,IS,FOLLOW_IS_in_nullPredicate1330); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_IS.add(IS104);
+
+ NULL105=(Token)match(input,NULL,FOLLOW_NULL_in_nullPredicate1332); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_NULL.add(NULL105);
+
+
+
+ // AST REWRITE
+ // elements: columnReference
+ // token labels:
+ // rule labels: retval
+ // token list labels:
+ // rule list labels:
+ if ( state.backtracking==0 ) {
+ retval.tree = root_0;
+ RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+ root_0 = (Object)adaptor.nil();
+ // 352:3: -> ^( PRED_EXISTS columnReference NOT )
+ {
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:352:6: ^( PRED_EXISTS columnReference NOT )
+ {
+ Object root_1 = (Object)adaptor.nil();
+ root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_EXISTS, "PRED_EXISTS"), root_1);
+
+ adaptor.addChild(root_1, stream_columnReference.nextTree());
+ adaptor.addChild(root_1, (Object)adaptor.create(NOT, "NOT"));
+
+ adaptor.addChild(root_0, root_1);
+ }
+
+ }
+
+ retval.tree = root_0;retval.tree = root_0;}
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:44: multiValuedColumnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:9: ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NOT NULL
{
- pushFollow(FOLLOW_multiValuedColumnReference_in_nullPredicate1323);
- multiValuedColumnReference103=multiValuedColumnReference();
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:9: ( ( columnReference )=> columnReference | multiValuedColumnReference )
+ int alt34=2;
+ int LA34_0 = input.LA(1);
- state._fsp--;
- if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference103.getTree());
+ if ( (LA34_0==ID) ) {
+ int LA34_1 = input.LA(2);
+ if ( (synpred6_CMIS()) ) {
+ alt34=1;
+ }
+ else if ( (true) ) {
+ alt34=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 1, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA34_0==DOUBLE_QUOTE) ) {
+ int LA34_2 = input.LA(2);
+
+ if ( (LA34_2==SELECT||LA34_2==AS||(LA34_2>=FROM && LA34_2<=ON)||(LA34_2>=WHERE && LA34_2<=NOT)||(LA34_2>=IN && LA34_2<=DESC)||(LA34_2>=UPPER && LA34_2<=SCORE)) ) {
+ int LA34_5 = input.LA(3);
+
+ if ( (LA34_5==DOUBLE_QUOTE) ) {
+ int LA34_7 = input.LA(4);
+
+ if ( (synpred6_CMIS()) ) {
+ alt34=1;
+ }
+ else if ( (true) ) {
+ alt34=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 7, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 5, input);
+
+ throw nvae;
+ }
+ }
+ else if ( (LA34_2==ID) ) {
+ int LA34_6 = input.LA(3);
+
+ if ( (LA34_6==DOUBLE_QUOTE) ) {
+ int LA34_7 = input.LA(4);
+
+ if ( (synpred6_CMIS()) ) {
+ alt34=1;
+ }
+ else if ( (true) ) {
+ alt34=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 7, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 6, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 2, input);
+
+ throw nvae;
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return retval;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 34, 0, input);
+
+ throw nvae;
+ }
+ switch (alt34) {
+ case 1 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:11: ( columnReference )=> columnReference
+ {
+ pushFollow(FOLLOW_columnReference_in_nullPredicate1361);
+ columnReference106=columnReference();
+
+ state._fsp--;
+ if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference106.getTree());
+
+ }
+ break;
+ case 2 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:49: multiValuedColumnReference
+ {
+ pushFollow(FOLLOW_multiValuedColumnReference_in_nullPredicate1365);
+ multiValuedColumnReference107=multiValuedColumnReference();
+
+ state._fsp--;
+ if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference107.getTree());
+
+ }
+ break;
+
+ }
+
+ IS108=(Token)match(input,IS,FOLLOW_IS_in_nullPredicate1368); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_IS.add(IS108);
+
+ NOT109=(Token)match(input,NOT,FOLLOW_NOT_in_nullPredicate1370); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_NOT.add(NOT109);
+
+ NULL110=(Token)match(input,NULL,FOLLOW_NULL_in_nullPredicate1372); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_NULL.add(NULL110);
+
+
+
+ // AST REWRITE
+ // elements: columnReference
+ // token labels:
+ // rule labels: retval
+ // token list labels:
+ // rule list labels:
+ if ( state.backtracking==0 ) {
+ retval.tree = root_0;
+ RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+ root_0 = (Object)adaptor.nil();
+ // 354:9: -> ^( PRED_EXISTS columnReference )
+ {
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:354:12: ^( PRED_EXISTS columnReference )
+ {
+ Object root_1 = (Object)adaptor.nil();
+ root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_EXISTS, "PRED_EXISTS"), root_1);
+
+ adaptor.addChild(root_1, stream_columnReference.nextTree());
+
+ adaptor.addChild(root_0, root_1);
+ }
+
+ }
+
+ retval.tree = root_0;retval.tree = root_0;}
}
break;
}
-
- IS104=(Token)match(input,IS,FOLLOW_IS_in_nullPredicate1326); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_IS.add(IS104);
-
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:75: ( NOT )?
- int alt34=2;
- int LA34_0 = input.LA(1);
-
- if ( (LA34_0==NOT) ) {
- alt34=1;
- }
- switch (alt34) {
- case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:75: NOT
- {
- NOT105=(Token)match(input,NOT,FOLLOW_NOT_in_nullPredicate1328); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_NOT.add(NOT105);
-
-
- }
- break;
-
- }
-
- NULL106=(Token)match(input,NULL,FOLLOW_NULL_in_nullPredicate1331); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_NULL.add(NULL106);
-
-
-
- // AST REWRITE
- // elements: columnReference, NOT
- // token labels:
- // rule labels: retval
- // token list labels:
- // rule list labels:
- if ( state.backtracking==0 ) {
- retval.tree = root_0;
- RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
-
- root_0 = (Object)adaptor.nil();
- // 352:3: -> ^( PRED_EXISTS columnReference ( NOT )? )
- {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:352:6: ^( PRED_EXISTS columnReference ( NOT )? )
- {
- Object root_1 = (Object)adaptor.nil();
- root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_EXISTS, "PRED_EXISTS"), root_1);
-
- adaptor.addChild(root_1, stream_columnReference.nextTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:352:36: ( NOT )?
- if ( stream_NOT.hasNext() ) {
- adaptor.addChild(root_1, stream_NOT.nextNode());
-
- }
- stream_NOT.reset();
-
- adaptor.addChild(root_0, root_1);
- }
-
- }
-
- retval.tree = root_0;retval.tree = root_0;}
- }
-
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
@@ -4506,55 +4662,55 @@ public class CMISParser extends Parser {
};
// $ANTLR start quantifiedComparisonPredicate
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:355:1: quantifiedComparisonPredicate : literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:357:1: quantifiedComparisonPredicate : literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) ;
public final CMISParser.quantifiedComparisonPredicate_return quantifiedComparisonPredicate() throws RecognitionException {
CMISParser.quantifiedComparisonPredicate_return retval = new CMISParser.quantifiedComparisonPredicate_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token ANY109=null;
- CMISParser.literalOrParameterName_return literalOrParameterName107 = null;
+ Token ANY113=null;
+ CMISParser.literalOrParameterName_return literalOrParameterName111 = null;
- CMISParser.compOp_return compOp108 = null;
+ CMISParser.compOp_return compOp112 = null;
- CMISParser.multiValuedColumnReference_return multiValuedColumnReference110 = null;
+ CMISParser.multiValuedColumnReference_return multiValuedColumnReference114 = null;
- Object ANY109_tree=null;
+ Object ANY113_tree=null;
RewriteRuleTokenStream stream_ANY=new RewriteRuleTokenStream(adaptor,"token ANY");
RewriteRuleSubtreeStream stream_compOp=new RewriteRuleSubtreeStream(adaptor,"rule compOp");
RewriteRuleSubtreeStream stream_literalOrParameterName=new RewriteRuleSubtreeStream(adaptor,"rule literalOrParameterName");
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:356:2: ( literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:356:4: literalOrParameterName compOp ANY multiValuedColumnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:358:2: ( literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:358:4: literalOrParameterName compOp ANY multiValuedColumnReference
{
- pushFollow(FOLLOW_literalOrParameterName_in_quantifiedComparisonPredicate1356);
- literalOrParameterName107=literalOrParameterName();
+ pushFollow(FOLLOW_literalOrParameterName_in_quantifiedComparisonPredicate1400);
+ literalOrParameterName111=literalOrParameterName();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_literalOrParameterName.add(literalOrParameterName107.getTree());
- pushFollow(FOLLOW_compOp_in_quantifiedComparisonPredicate1358);
- compOp108=compOp();
+ if ( state.backtracking==0 ) stream_literalOrParameterName.add(literalOrParameterName111.getTree());
+ pushFollow(FOLLOW_compOp_in_quantifiedComparisonPredicate1402);
+ compOp112=compOp();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_compOp.add(compOp108.getTree());
- ANY109=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedComparisonPredicate1360); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_ANY.add(ANY109);
+ if ( state.backtracking==0 ) stream_compOp.add(compOp112.getTree());
+ ANY113=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedComparisonPredicate1404); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_ANY.add(ANY113);
- pushFollow(FOLLOW_multiValuedColumnReference_in_quantifiedComparisonPredicate1362);
- multiValuedColumnReference110=multiValuedColumnReference();
+ pushFollow(FOLLOW_multiValuedColumnReference_in_quantifiedComparisonPredicate1406);
+ multiValuedColumnReference114=multiValuedColumnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference110.getTree());
+ if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference114.getTree());
// AST REWRITE
- // elements: compOp, multiValuedColumnReference, literalOrParameterName, ANY
+ // elements: ANY, multiValuedColumnReference, compOp, literalOrParameterName
// token labels:
// rule labels: retval
// token list labels:
@@ -4564,9 +4720,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 357:2: -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
+ // 359:2: -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:357:5: ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:359:5: ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_COMPARISON, "PRED_COMPARISON"), root_1);
@@ -4609,28 +4765,28 @@ public class CMISParser extends Parser {
};
// $ANTLR start quantifiedInPredicate
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:361:1: quantifiedInPredicate : ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:363: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);
Object root_0 = null;
- Token ANY111=null;
- Token NOT113=null;
- Token IN114=null;
- Token LPAREN115=null;
- Token RPAREN117=null;
- CMISParser.multiValuedColumnReference_return multiValuedColumnReference112 = null;
+ Token ANY115=null;
+ Token NOT117=null;
+ Token IN118=null;
+ Token LPAREN119=null;
+ Token RPAREN121=null;
+ CMISParser.multiValuedColumnReference_return multiValuedColumnReference116 = null;
- CMISParser.inValueList_return inValueList116 = null;
+ CMISParser.inValueList_return inValueList120 = null;
- Object ANY111_tree=null;
- Object NOT113_tree=null;
- Object IN114_tree=null;
- Object LPAREN115_tree=null;
- Object RPAREN117_tree=null;
+ Object ANY115_tree=null;
+ Object NOT117_tree=null;
+ Object IN118_tree=null;
+ Object LPAREN119_tree=null;
+ Object RPAREN121_tree=null;
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_ANY=new RewriteRuleTokenStream(adaptor,"token ANY");
RewriteRuleTokenStream stream_IN=new RewriteRuleTokenStream(adaptor,"token IN");
@@ -4639,31 +4795,31 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
RewriteRuleSubtreeStream stream_inValueList=new RewriteRuleSubtreeStream(adaptor,"rule inValueList");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:2: ( ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:4: ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:364:2: ( ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:364:4: ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN
{
- ANY111=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedInPredicate1391); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_ANY.add(ANY111);
+ ANY115=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedInPredicate1435); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_ANY.add(ANY115);
- pushFollow(FOLLOW_multiValuedColumnReference_in_quantifiedInPredicate1393);
- multiValuedColumnReference112=multiValuedColumnReference();
+ pushFollow(FOLLOW_multiValuedColumnReference_in_quantifiedInPredicate1437);
+ multiValuedColumnReference116=multiValuedColumnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference112.getTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:35: ( NOT )?
- int alt35=2;
- int LA35_0 = input.LA(1);
+ if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference116.getTree());
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:364:35: ( NOT )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
- if ( (LA35_0==NOT) ) {
- alt35=1;
+ if ( (LA36_0==NOT) ) {
+ alt36=1;
}
- switch (alt35) {
+ switch (alt36) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:35: NOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:364:35: NOT
{
- NOT113=(Token)match(input,NOT,FOLLOW_NOT_in_quantifiedInPredicate1395); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_NOT.add(NOT113);
+ NOT117=(Token)match(input,NOT,FOLLOW_NOT_in_quantifiedInPredicate1439); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_NOT.add(NOT117);
}
@@ -4671,25 +4827,25 @@ public class CMISParser extends Parser {
}
- IN114=(Token)match(input,IN,FOLLOW_IN_in_quantifiedInPredicate1398); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_IN.add(IN114);
+ IN118=(Token)match(input,IN,FOLLOW_IN_in_quantifiedInPredicate1442); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_IN.add(IN118);
- LPAREN115=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_quantifiedInPredicate1401); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN115);
+ LPAREN119=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_quantifiedInPredicate1445); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN119);
- pushFollow(FOLLOW_inValueList_in_quantifiedInPredicate1403);
- inValueList116=inValueList();
+ pushFollow(FOLLOW_inValueList_in_quantifiedInPredicate1447);
+ inValueList120=inValueList();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_inValueList.add(inValueList116.getTree());
- RPAREN117=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_quantifiedInPredicate1405); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN117);
+ if ( state.backtracking==0 ) stream_inValueList.add(inValueList120.getTree());
+ RPAREN121=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_quantifiedInPredicate1449); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN121);
// AST REWRITE
- // elements: ANY, multiValuedColumnReference, inValueList, NOT
+ // elements: multiValuedColumnReference, ANY, NOT, inValueList
// token labels:
// rule labels: retval
// token list labels:
@@ -4699,9 +4855,9 @@ 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 inValueList ( NOT )? )
+ // 365:3: -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:363:6: ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:365: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);
@@ -4709,7 +4865,7 @@ public class CMISParser extends Parser {
adaptor.addChild(root_1, stream_ANY.nextNode());
adaptor.addChild(root_1, stream_multiValuedColumnReference.nextTree());
adaptor.addChild(root_1, stream_inValueList.nextTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:363:59: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:365:59: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
@@ -4749,28 +4905,28 @@ public class CMISParser extends Parser {
};
// $ANTLR start textSearchPredicate
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:366:1: textSearchPredicate : CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:368: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);
Object root_0 = null;
- Token CONTAINS118=null;
- Token LPAREN119=null;
- Token COMMA121=null;
- Token COMMA122=null;
- Token RPAREN124=null;
- CMISParser.qualifier_return qualifier120 = null;
+ Token CONTAINS122=null;
+ Token LPAREN123=null;
+ Token COMMA125=null;
+ Token COMMA126=null;
+ Token RPAREN128=null;
+ CMISParser.qualifier_return qualifier124 = null;
- CMISParser.textSearchExpression_return textSearchExpression123 = null;
+ CMISParser.textSearchExpression_return textSearchExpression127 = null;
- Object CONTAINS118_tree=null;
- Object LPAREN119_tree=null;
- Object COMMA121_tree=null;
- Object COMMA122_tree=null;
- Object RPAREN124_tree=null;
+ Object CONTAINS122_tree=null;
+ Object LPAREN123_tree=null;
+ Object COMMA125_tree=null;
+ Object COMMA126_tree=null;
+ Object RPAREN128_tree=null;
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleTokenStream stream_CONTAINS=new RewriteRuleTokenStream(adaptor,"token CONTAINS");
@@ -4778,46 +4934,46 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_textSearchExpression=new RewriteRuleSubtreeStream(adaptor,"rule textSearchExpression");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:2: ( CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:4: CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:369:2: ( CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:369:4: CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN
{
- CONTAINS118=(Token)match(input,CONTAINS,FOLLOW_CONTAINS_in_textSearchPredicate1434); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_CONTAINS.add(CONTAINS118);
+ CONTAINS122=(Token)match(input,CONTAINS,FOLLOW_CONTAINS_in_textSearchPredicate1478); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_CONTAINS.add(CONTAINS122);
- LPAREN119=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_textSearchPredicate1436); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN119);
+ LPAREN123=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_textSearchPredicate1480); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN123);
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:20: ( qualifier COMMA | COMMA )?
- int alt36=3;
- int LA36_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:369:20: ( qualifier COMMA | COMMA )?
+ int alt37=3;
+ int LA37_0 = input.LA(1);
- if ( ((LA36_0>=ID && LA36_0<=DOUBLE_QUOTE)) ) {
- alt36=1;
+ if ( ((LA37_0>=ID && LA37_0<=DOUBLE_QUOTE)) ) {
+ alt37=1;
}
- else if ( (LA36_0==COMMA) ) {
- alt36=2;
+ else if ( (LA37_0==COMMA) ) {
+ alt37=2;
}
- switch (alt36) {
+ switch (alt37) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:21: qualifier COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:369:21: qualifier COMMA
{
- pushFollow(FOLLOW_qualifier_in_textSearchPredicate1439);
- qualifier120=qualifier();
+ pushFollow(FOLLOW_qualifier_in_textSearchPredicate1483);
+ qualifier124=qualifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_qualifier.add(qualifier120.getTree());
- COMMA121=(Token)match(input,COMMA,FOLLOW_COMMA_in_textSearchPredicate1441); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COMMA.add(COMMA121);
+ if ( state.backtracking==0 ) stream_qualifier.add(qualifier124.getTree());
+ COMMA125=(Token)match(input,COMMA,FOLLOW_COMMA_in_textSearchPredicate1485); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COMMA.add(COMMA125);
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:39: COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:369:39: COMMA
{
- COMMA122=(Token)match(input,COMMA,FOLLOW_COMMA_in_textSearchPredicate1445); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COMMA.add(COMMA122);
+ COMMA126=(Token)match(input,COMMA,FOLLOW_COMMA_in_textSearchPredicate1489); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COMMA.add(COMMA126);
}
@@ -4825,14 +4981,14 @@ public class CMISParser extends Parser {
}
- pushFollow(FOLLOW_textSearchExpression_in_textSearchPredicate1449);
- textSearchExpression123=textSearchExpression();
+ pushFollow(FOLLOW_textSearchExpression_in_textSearchPredicate1493);
+ textSearchExpression127=textSearchExpression();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_textSearchExpression.add(textSearchExpression123.getTree());
- RPAREN124=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_textSearchPredicate1451); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN124);
+ if ( state.backtracking==0 ) stream_textSearchExpression.add(textSearchExpression127.getTree());
+ RPAREN128=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_textSearchPredicate1495); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN128);
@@ -4847,15 +5003,15 @@ 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 )? )
+ // 370:3: -> ^( PRED_FTS textSearchExpression ( qualifier )? )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:368:6: ^( PRED_FTS textSearchExpression ( qualifier )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:370: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());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:368:38: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:370:38: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_1, stream_qualifier.nextTree());
@@ -4895,56 +5051,56 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderPredicate
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:371:1: folderPredicate : ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:373:1: folderPredicate : ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) );
public final CMISParser.folderPredicate_return folderPredicate() throws RecognitionException {
CMISParser.folderPredicate_return retval = new CMISParser.folderPredicate_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token IN_FOLDER125=null;
- Token IN_TREE127=null;
- CMISParser.folderPredicateArgs_return folderPredicateArgs126 = null;
+ Token IN_FOLDER129=null;
+ Token IN_TREE131=null;
+ CMISParser.folderPredicateArgs_return folderPredicateArgs130 = null;
- CMISParser.folderPredicateArgs_return folderPredicateArgs128 = null;
+ CMISParser.folderPredicateArgs_return folderPredicateArgs132 = null;
- Object IN_FOLDER125_tree=null;
- Object IN_TREE127_tree=null;
+ Object IN_FOLDER129_tree=null;
+ Object IN_TREE131_tree=null;
RewriteRuleTokenStream stream_IN_TREE=new RewriteRuleTokenStream(adaptor,"token IN_TREE");
RewriteRuleTokenStream stream_IN_FOLDER=new RewriteRuleTokenStream(adaptor,"token IN_FOLDER");
RewriteRuleSubtreeStream stream_folderPredicateArgs=new RewriteRuleSubtreeStream(adaptor,"rule folderPredicateArgs");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:372:2: ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) )
- int alt37=2;
- int LA37_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:374:2: ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) )
+ int alt38=2;
+ int LA38_0 = input.LA(1);
- if ( (LA37_0==IN_FOLDER) ) {
- alt37=1;
+ if ( (LA38_0==IN_FOLDER) ) {
+ alt38=1;
}
- else if ( (LA37_0==IN_TREE) ) {
- alt37=2;
+ else if ( (LA38_0==IN_TREE) ) {
+ alt38=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
- new NoViableAltException("", 37, 0, input);
+ new NoViableAltException("", 38, 0, input);
throw nvae;
}
- switch (alt37) {
+ switch (alt38) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:372:4: IN_FOLDER folderPredicateArgs
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:374:4: IN_FOLDER folderPredicateArgs
{
- 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);
+ IN_FOLDER129=(Token)match(input,IN_FOLDER,FOLLOW_IN_FOLDER_in_folderPredicate1520); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_IN_FOLDER.add(IN_FOLDER129);
- pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1479);
- folderPredicateArgs126=folderPredicateArgs();
+ pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1523);
+ folderPredicateArgs130=folderPredicateArgs();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_folderPredicateArgs.add(folderPredicateArgs126.getTree());
+ if ( state.backtracking==0 ) stream_folderPredicateArgs.add(folderPredicateArgs130.getTree());
// AST REWRITE
@@ -4958,9 +5114,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 373:3: -> ^( PRED_CHILD folderPredicateArgs )
+ // 375:3: -> ^( PRED_CHILD folderPredicateArgs )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:373:6: ^( PRED_CHILD folderPredicateArgs )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:375:6: ^( PRED_CHILD folderPredicateArgs )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_CHILD, "PRED_CHILD"), root_1);
@@ -4976,17 +5132,17 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:374:10: IN_TREE folderPredicateArgs
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:376:10: IN_TREE folderPredicateArgs
{
- 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);
+ IN_TREE131=(Token)match(input,IN_TREE,FOLLOW_IN_TREE_in_folderPredicate1544); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_IN_TREE.add(IN_TREE131);
- pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1502);
- folderPredicateArgs128=folderPredicateArgs();
+ pushFollow(FOLLOW_folderPredicateArgs_in_folderPredicate1546);
+ folderPredicateArgs132=folderPredicateArgs();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_folderPredicateArgs.add(folderPredicateArgs128.getTree());
+ if ( state.backtracking==0 ) stream_folderPredicateArgs.add(folderPredicateArgs132.getTree());
// AST REWRITE
@@ -5000,9 +5156,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 375:3: -> ^( PRED_DESCENDANT folderPredicateArgs )
+ // 377:3: -> ^( PRED_DESCENDANT folderPredicateArgs )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:375:6: ^( PRED_DESCENDANT folderPredicateArgs )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:377:6: ^( PRED_DESCENDANT folderPredicateArgs )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_DESCENDANT, "PRED_DESCENDANT"), root_1);
@@ -5044,69 +5200,69 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderPredicateArgs
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:378:1: folderPredicateArgs : LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:380:1: folderPredicateArgs : LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? ;
public final CMISParser.folderPredicateArgs_return folderPredicateArgs() throws RecognitionException {
CMISParser.folderPredicateArgs_return retval = new CMISParser.folderPredicateArgs_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token LPAREN129=null;
- Token COMMA131=null;
- Token COMMA132=null;
- Token RPAREN134=null;
- CMISParser.qualifier_return qualifier130 = null;
+ Token LPAREN133=null;
+ Token COMMA135=null;
+ Token COMMA136=null;
+ Token RPAREN138=null;
+ CMISParser.qualifier_return qualifier134 = null;
- CMISParser.folderId_return folderId133 = null;
+ CMISParser.folderId_return folderId137 = null;
- Object LPAREN129_tree=null;
- Object COMMA131_tree=null;
- Object COMMA132_tree=null;
- Object RPAREN134_tree=null;
+ Object LPAREN133_tree=null;
+ Object COMMA135_tree=null;
+ Object COMMA136_tree=null;
+ Object RPAREN138_tree=null;
RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_folderId=new RewriteRuleSubtreeStream(adaptor,"rule folderId");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:2: ( LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:4: LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:381:2: ( LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:381:4: LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN
{
- LPAREN129=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_folderPredicateArgs1524); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN129);
+ LPAREN133=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_folderPredicateArgs1568); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN133);
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:11: ( qualifier COMMA | COMMA )?
- int alt38=3;
- int LA38_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:381:11: ( qualifier COMMA | COMMA )?
+ int alt39=3;
+ int LA39_0 = input.LA(1);
- if ( ((LA38_0>=ID && LA38_0<=DOUBLE_QUOTE)) ) {
- alt38=1;
+ if ( ((LA39_0>=ID && LA39_0<=DOUBLE_QUOTE)) ) {
+ alt39=1;
}
- else if ( (LA38_0==COMMA) ) {
- alt38=2;
+ else if ( (LA39_0==COMMA) ) {
+ alt39=2;
}
- switch (alt38) {
+ switch (alt39) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:12: qualifier COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:381:12: qualifier COMMA
{
- pushFollow(FOLLOW_qualifier_in_folderPredicateArgs1527);
- qualifier130=qualifier();
+ pushFollow(FOLLOW_qualifier_in_folderPredicateArgs1571);
+ qualifier134=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_folderPredicateArgs1529); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COMMA.add(COMMA131);
+ if ( state.backtracking==0 ) stream_qualifier.add(qualifier134.getTree());
+ COMMA135=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1573); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COMMA.add(COMMA135);
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:30: COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:381:30: COMMA
{
- COMMA132=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1533); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COMMA.add(COMMA132);
+ COMMA136=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1577); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COMMA.add(COMMA136);
}
@@ -5114,19 +5270,19 @@ public class CMISParser extends Parser {
}
- pushFollow(FOLLOW_folderId_in_folderPredicateArgs1537);
- folderId133=folderId();
+ pushFollow(FOLLOW_folderId_in_folderPredicateArgs1581);
+ folderId137=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_folderPredicateArgs1539); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN134);
+ if ( state.backtracking==0 ) stream_folderId.add(folderId137.getTree());
+ RPAREN138=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_folderPredicateArgs1583); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN138);
// AST REWRITE
- // elements: folderId, qualifier
+ // elements: qualifier, folderId
// token labels:
// rule labels: retval
// token list labels:
@@ -5136,10 +5292,10 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 380:3: -> folderId ( qualifier )?
+ // 382:3: -> folderId ( qualifier )?
{
adaptor.addChild(root_0, stream_folderId.nextTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:380:15: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:382:15: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_0, stream_qualifier.nextTree());
@@ -5176,82 +5332,82 @@ public class CMISParser extends Parser {
};
// $ANTLR start orderByClause
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:383:1: orderByClause : ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:385:1: orderByClause : ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) ;
public final CMISParser.orderByClause_return orderByClause() throws RecognitionException {
CMISParser.orderByClause_return retval = new CMISParser.orderByClause_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token ORDER135=null;
- Token BY136=null;
- Token COMMA138=null;
- CMISParser.sortSpecification_return sortSpecification137 = null;
+ Token ORDER139=null;
+ Token BY140=null;
+ Token COMMA142=null;
+ CMISParser.sortSpecification_return sortSpecification141 = null;
- CMISParser.sortSpecification_return sortSpecification139 = null;
+ CMISParser.sortSpecification_return sortSpecification143 = null;
- Object ORDER135_tree=null;
- Object BY136_tree=null;
- Object COMMA138_tree=null;
+ Object ORDER139_tree=null;
+ Object BY140_tree=null;
+ Object COMMA142_tree=null;
RewriteRuleTokenStream stream_BY=new RewriteRuleTokenStream(adaptor,"token BY");
RewriteRuleTokenStream stream_ORDER=new RewriteRuleTokenStream(adaptor,"token ORDER");
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_sortSpecification=new RewriteRuleSubtreeStream(adaptor,"rule sortSpecification");
paraphrases.push("in order by");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386:2: ( ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386:4: ORDER BY sortSpecification ( COMMA sortSpecification )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:388:2: ( ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:388:4: ORDER BY sortSpecification ( COMMA sortSpecification )*
{
- ORDER135=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1578); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_ORDER.add(ORDER135);
+ ORDER139=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1622); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_ORDER.add(ORDER139);
- BY136=(Token)match(input,BY,FOLLOW_BY_in_orderByClause1580); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_BY.add(BY136);
+ BY140=(Token)match(input,BY,FOLLOW_BY_in_orderByClause1624); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_BY.add(BY140);
- pushFollow(FOLLOW_sortSpecification_in_orderByClause1582);
- sortSpecification137=sortSpecification();
+ pushFollow(FOLLOW_sortSpecification_in_orderByClause1626);
+ sortSpecification141=sortSpecification();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_sortSpecification.add(sortSpecification137.getTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386:31: ( COMMA sortSpecification )*
- loop39:
+ if ( state.backtracking==0 ) stream_sortSpecification.add(sortSpecification141.getTree());
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:388:31: ( COMMA sortSpecification )*
+ loop40:
do {
- int alt39=2;
- int LA39_0 = input.LA(1);
+ int alt40=2;
+ int LA40_0 = input.LA(1);
- if ( (LA39_0==COMMA) ) {
- alt39=1;
+ if ( (LA40_0==COMMA) ) {
+ alt40=1;
}
- switch (alt39) {
+ switch (alt40) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386:33: COMMA sortSpecification
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:388:33: COMMA sortSpecification
{
- COMMA138=(Token)match(input,COMMA,FOLLOW_COMMA_in_orderByClause1586); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COMMA.add(COMMA138);
+ COMMA142=(Token)match(input,COMMA,FOLLOW_COMMA_in_orderByClause1630); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COMMA.add(COMMA142);
- pushFollow(FOLLOW_sortSpecification_in_orderByClause1588);
- sortSpecification139=sortSpecification();
+ pushFollow(FOLLOW_sortSpecification_in_orderByClause1632);
+ sortSpecification143=sortSpecification();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_sortSpecification.add(sortSpecification139.getTree());
+ if ( state.backtracking==0 ) stream_sortSpecification.add(sortSpecification143.getTree());
}
break;
default :
- break loop39;
+ break loop40;
}
} while (true);
// AST REWRITE
- // elements: sortSpecification, ORDER
+ // elements: ORDER, sortSpecification
// token labels:
// rule labels: retval
// token list labels:
@@ -5261,9 +5417,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 387:3: -> ^( ORDER ( sortSpecification )+ )
+ // 389:3: -> ^( ORDER ( sortSpecification )+ )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:387:6: ^( ORDER ( sortSpecification )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:389:6: ^( ORDER ( sortSpecification )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_ORDER.nextNode(), root_1);
@@ -5313,7 +5469,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start sortSpecification
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:390:1: sortSpecification : ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:392: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);
@@ -5321,9 +5477,9 @@ public class CMISParser extends Parser {
Object root_0 = null;
Token by=null;
- CMISParser.columnReference_return columnReference140 = null;
+ CMISParser.columnReference_return columnReference144 = null;
- CMISParser.columnReference_return columnReference141 = null;
+ CMISParser.columnReference_return columnReference145 = null;
Object by_tree=null;
@@ -5331,19 +5487,19 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_DESC=new RewriteRuleTokenStream(adaptor,"token DESC");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:391:2: ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) )
- int alt41=2;
- alt41 = dfa41.predict(input);
- switch (alt41) {
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:2: ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) )
+ int alt42=2;
+ alt42 = dfa42.predict(input);
+ switch (alt42) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:391:4: columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:4: columnReference
{
- pushFollow(FOLLOW_columnReference_in_sortSpecification1614);
- columnReference140=columnReference();
+ pushFollow(FOLLOW_columnReference_in_sortSpecification1658);
+ columnReference144=columnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_columnReference.add(columnReference140.getTree());
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference144.getTree());
// AST REWRITE
@@ -5357,9 +5513,9 @@ 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 columnReference ASC )
+ // 394:3: -> ^( SORT_SPECIFICATION columnReference ASC )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:392:6: ^( SORT_SPECIFICATION columnReference ASC )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:394: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);
@@ -5376,45 +5532,45 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:4: columnReference (by= ASC | by= DESC )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:395:4: columnReference (by= ASC | by= DESC )
{
- pushFollow(FOLLOW_columnReference_in_sortSpecification1632);
- columnReference141=columnReference();
+ pushFollow(FOLLOW_columnReference_in_sortSpecification1676);
+ columnReference145=columnReference();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_columnReference.add(columnReference141.getTree());
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:20: (by= ASC | by= DESC )
- int alt40=2;
- int LA40_0 = input.LA(1);
+ if ( state.backtracking==0 ) stream_columnReference.add(columnReference145.getTree());
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:395:20: (by= ASC | by= DESC )
+ int alt41=2;
+ int LA41_0 = input.LA(1);
- if ( (LA40_0==ASC) ) {
- alt40=1;
+ if ( (LA41_0==ASC) ) {
+ alt41=1;
}
- else if ( (LA40_0==DESC) ) {
- alt40=2;
+ else if ( (LA41_0==DESC) ) {
+ alt41=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
- new NoViableAltException("", 40, 0, input);
+ new NoViableAltException("", 41, 0, input);
throw nvae;
}
- switch (alt40) {
+ switch (alt41) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:22: by= ASC
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:395:22: by= ASC
{
- by=(Token)match(input,ASC,FOLLOW_ASC_in_sortSpecification1638); if (state.failed) return retval;
+ by=(Token)match(input,ASC,FOLLOW_ASC_in_sortSpecification1682); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ASC.add(by);
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:31: by= DESC
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:395:31: by= DESC
{
- by=(Token)match(input,DESC,FOLLOW_DESC_in_sortSpecification1644); if (state.failed) return retval;
+ by=(Token)match(input,DESC,FOLLOW_DESC_in_sortSpecification1688); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DESC.add(by);
@@ -5437,9 +5593,9 @@ 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 columnReference $by)
+ // 396:3: -> ^( SORT_SPECIFICATION columnReference $by)
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:394:6: ^( SORT_SPECIFICATION columnReference $by)
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:396: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);
@@ -5482,29 +5638,29 @@ public class CMISParser extends Parser {
};
// $ANTLR start correlationName
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:397:1: correlationName : identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:399:1: correlationName : identifier ;
public final CMISParser.correlationName_return correlationName() throws RecognitionException {
CMISParser.correlationName_return retval = new CMISParser.correlationName_return();
retval.start = input.LT(1);
Object root_0 = null;
- CMISParser.identifier_return identifier142 = null;
+ CMISParser.identifier_return identifier146 = null;
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:398:2: ( identifier )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:398:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:400:2: ( identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:400:4: identifier
{
root_0 = (Object)adaptor.nil();
- pushFollow(FOLLOW_identifier_in_correlationName1671);
- identifier142=identifier();
+ pushFollow(FOLLOW_identifier_in_correlationName1715);
+ identifier146=identifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) adaptor.addChild(root_0, identifier142.getTree());
+ if ( state.backtracking==0 ) adaptor.addChild(root_0, identifier146.getTree());
}
@@ -5533,27 +5689,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start tableName
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:405:1: tableName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:407:1: tableName : identifier -> identifier ;
public final CMISParser.tableName_return tableName() throws RecognitionException {
CMISParser.tableName_return retval = new CMISParser.tableName_return();
retval.start = input.LT(1);
Object root_0 = null;
- CMISParser.identifier_return identifier143 = null;
+ CMISParser.identifier_return identifier147 = null;
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:406:2: ( identifier -> identifier )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:406:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:408:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:408:4: identifier
{
- pushFollow(FOLLOW_identifier_in_tableName1685);
- identifier143=identifier();
+ pushFollow(FOLLOW_identifier_in_tableName1729);
+ identifier147=identifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_identifier.add(identifier143.getTree());
+ if ( state.backtracking==0 ) stream_identifier.add(identifier147.getTree());
// AST REWRITE
@@ -5567,7 +5723,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 407:3: -> identifier
+ // 409:3: -> identifier
{
adaptor.addChild(root_0, stream_identifier.nextTree());
@@ -5601,27 +5757,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start columnName
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:410:1: columnName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:412:1: columnName : identifier -> identifier ;
public final CMISParser.columnName_return columnName() throws RecognitionException {
CMISParser.columnName_return retval = new CMISParser.columnName_return();
retval.start = input.LT(1);
Object root_0 = null;
- CMISParser.identifier_return identifier144 = null;
+ CMISParser.identifier_return identifier148 = null;
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:411:2: ( identifier -> identifier )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:411:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:413:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:413:4: identifier
{
- pushFollow(FOLLOW_identifier_in_columnName1703);
- identifier144=identifier();
+ pushFollow(FOLLOW_identifier_in_columnName1747);
+ identifier148=identifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_identifier.add(identifier144.getTree());
+ if ( state.backtracking==0 ) stream_identifier.add(identifier148.getTree());
// AST REWRITE
@@ -5635,7 +5791,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 412:3: -> identifier
+ // 414:3: -> identifier
{
adaptor.addChild(root_0, stream_identifier.nextTree());
@@ -5669,27 +5825,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start multiValuedColumnName
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:415:1: multiValuedColumnName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:417:1: multiValuedColumnName : identifier -> identifier ;
public final CMISParser.multiValuedColumnName_return multiValuedColumnName() throws RecognitionException {
CMISParser.multiValuedColumnName_return retval = new CMISParser.multiValuedColumnName_return();
retval.start = input.LT(1);
Object root_0 = null;
- CMISParser.identifier_return identifier145 = null;
+ CMISParser.identifier_return identifier149 = null;
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:416:2: ( identifier -> identifier )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:416:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:418:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:418:4: identifier
{
- pushFollow(FOLLOW_identifier_in_multiValuedColumnName1722);
- identifier145=identifier();
+ pushFollow(FOLLOW_identifier_in_multiValuedColumnName1766);
+ identifier149=identifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_identifier.add(identifier145.getTree());
+ if ( state.backtracking==0 ) stream_identifier.add(identifier149.getTree());
// AST REWRITE
@@ -5703,7 +5859,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 417:3: -> identifier
+ // 419:3: -> identifier
{
adaptor.addChild(root_0, stream_identifier.nextTree());
@@ -5737,33 +5893,33 @@ public class CMISParser extends Parser {
};
// $ANTLR start parameterName
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:420:1: parameterName : COLON identifier -> ^( PARAMETER identifier ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:422:1: parameterName : COLON identifier -> ^( PARAMETER identifier ) ;
public final CMISParser.parameterName_return parameterName() throws RecognitionException {
CMISParser.parameterName_return retval = new CMISParser.parameterName_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token COLON146=null;
- CMISParser.identifier_return identifier147 = null;
+ Token COLON150=null;
+ CMISParser.identifier_return identifier151 = null;
- Object COLON146_tree=null;
+ Object COLON150_tree=null;
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:421:2: ( COLON identifier -> ^( PARAMETER identifier ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:421:4: COLON identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:423:2: ( COLON identifier -> ^( PARAMETER identifier ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:423:4: COLON identifier
{
- COLON146=(Token)match(input,COLON,FOLLOW_COLON_in_parameterName1740); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_COLON.add(COLON146);
+ COLON150=(Token)match(input,COLON,FOLLOW_COLON_in_parameterName1784); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_COLON.add(COLON150);
- pushFollow(FOLLOW_identifier_in_parameterName1742);
- identifier147=identifier();
+ pushFollow(FOLLOW_identifier_in_parameterName1786);
+ identifier151=identifier();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_identifier.add(identifier147.getTree());
+ if ( state.backtracking==0 ) stream_identifier.add(identifier151.getTree());
// AST REWRITE
@@ -5777,9 +5933,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 422:3: -> ^( PARAMETER identifier )
+ // 424:3: -> ^( PARAMETER identifier )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:422:6: ^( PARAMETER identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:424:6: ^( PARAMETER identifier )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER, "PARAMETER"), root_1);
@@ -5819,27 +5975,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderId
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:425:1: folderId : characterStringLiteral -> characterStringLiteral ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:427:1: folderId : characterStringLiteral -> characterStringLiteral ;
public final CMISParser.folderId_return folderId() throws RecognitionException {
CMISParser.folderId_return retval = new CMISParser.folderId_return();
retval.start = input.LT(1);
Object root_0 = null;
- CMISParser.characterStringLiteral_return characterStringLiteral148 = null;
+ CMISParser.characterStringLiteral_return characterStringLiteral152 = null;
RewriteRuleSubtreeStream stream_characterStringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule characterStringLiteral");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:426:3: ( characterStringLiteral -> characterStringLiteral )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:426:5: characterStringLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:428:3: ( characterStringLiteral -> characterStringLiteral )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:428:5: characterStringLiteral
{
- pushFollow(FOLLOW_characterStringLiteral_in_folderId1765);
- characterStringLiteral148=characterStringLiteral();
+ pushFollow(FOLLOW_characterStringLiteral_in_folderId1809);
+ characterStringLiteral152=characterStringLiteral();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_characterStringLiteral.add(characterStringLiteral148.getTree());
+ if ( state.backtracking==0 ) stream_characterStringLiteral.add(characterStringLiteral152.getTree());
// AST REWRITE
@@ -5853,7 +6009,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 427:4: -> characterStringLiteral
+ // 429:4: -> characterStringLiteral
{
adaptor.addChild(root_0, stream_characterStringLiteral.nextTree());
@@ -5887,27 +6043,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start textSearchExpression
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:430:1: textSearchExpression : QUOTED_STRING ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:432:1: textSearchExpression : QUOTED_STRING ;
public final CMISParser.textSearchExpression_return textSearchExpression() throws RecognitionException {
CMISParser.textSearchExpression_return retval = new CMISParser.textSearchExpression_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token QUOTED_STRING149=null;
+ Token QUOTED_STRING153=null;
- Object QUOTED_STRING149_tree=null;
+ Object QUOTED_STRING153_tree=null;
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:431:2: ( QUOTED_STRING )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:431:4: QUOTED_STRING
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:433:2: ( QUOTED_STRING )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:433:4: QUOTED_STRING
{
root_0 = (Object)adaptor.nil();
- QUOTED_STRING149=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_textSearchExpression1786); if (state.failed) return retval;
+ QUOTED_STRING153=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_textSearchExpression1830); if (state.failed) return retval;
if ( state.backtracking==0 ) {
- QUOTED_STRING149_tree = (Object)adaptor.create(QUOTED_STRING149);
- adaptor.addChild(root_0, QUOTED_STRING149_tree);
+ QUOTED_STRING153_tree = (Object)adaptor.create(QUOTED_STRING153);
+ adaptor.addChild(root_0, QUOTED_STRING153_tree);
}
}
@@ -5937,49 +6093,49 @@ public class CMISParser extends Parser {
};
// $ANTLR start identifier
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:434:1: identifier : ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:436:1: identifier : ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) );
public final CMISParser.identifier_return identifier() throws RecognitionException {
CMISParser.identifier_return retval = new CMISParser.identifier_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token ID150=null;
- Token DOUBLE_QUOTE151=null;
- Token DOUBLE_QUOTE153=null;
- CMISParser.keyWordOrId_return keyWordOrId152 = null;
+ Token ID154=null;
+ Token DOUBLE_QUOTE155=null;
+ Token DOUBLE_QUOTE157=null;
+ CMISParser.keyWordOrId_return keyWordOrId156 = null;
- Object ID150_tree=null;
- Object DOUBLE_QUOTE151_tree=null;
- Object DOUBLE_QUOTE153_tree=null;
+ Object ID154_tree=null;
+ Object DOUBLE_QUOTE155_tree=null;
+ Object DOUBLE_QUOTE157_tree=null;
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleTokenStream stream_DOUBLE_QUOTE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_QUOTE");
RewriteRuleSubtreeStream stream_keyWordOrId=new RewriteRuleSubtreeStream(adaptor,"rule keyWordOrId");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:435:2: ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) )
- int alt42=2;
- int LA42_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:437:2: ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) )
+ int alt43=2;
+ int LA43_0 = input.LA(1);
- if ( (LA42_0==ID) ) {
- alt42=1;
+ if ( (LA43_0==ID) ) {
+ alt43=1;
}
- else if ( (LA42_0==DOUBLE_QUOTE) ) {
- alt42=2;
+ else if ( (LA43_0==DOUBLE_QUOTE) ) {
+ alt43=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
- new NoViableAltException("", 42, 0, input);
+ new NoViableAltException("", 43, 0, input);
throw nvae;
}
- switch (alt42) {
+ switch (alt43) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:435:4: ID
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:437:4: ID
{
- ID150=(Token)match(input,ID,FOLLOW_ID_in_identifier1798); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_ID.add(ID150);
+ ID154=(Token)match(input,ID,FOLLOW_ID_in_identifier1842); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_ID.add(ID154);
@@ -5994,7 +6150,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 436:3: -> ID
+ // 438:3: -> ID
{
adaptor.addChild(root_0, stream_ID.nextNode());
@@ -6004,19 +6160,19 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:437:4: DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:439:4: DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE
{
- 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);
+ DOUBLE_QUOTE155=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1853); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_DOUBLE_QUOTE.add(DOUBLE_QUOTE155);
- pushFollow(FOLLOW_keyWordOrId_in_identifier1811);
- keyWordOrId152=keyWordOrId();
+ pushFollow(FOLLOW_keyWordOrId_in_identifier1855);
+ keyWordOrId156=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_identifier1813); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_DOUBLE_QUOTE.add(DOUBLE_QUOTE153);
+ if ( state.backtracking==0 ) stream_keyWordOrId.add(keyWordOrId156.getTree());
+ DOUBLE_QUOTE157=(Token)match(input,DOUBLE_QUOTE,FOLLOW_DOUBLE_QUOTE_in_identifier1857); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_DOUBLE_QUOTE.add(DOUBLE_QUOTE157);
@@ -6031,9 +6187,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 438:3: -> ^( keyWordOrId )
+ // 440:3: -> ^( keyWordOrId )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:438:6: ^( keyWordOrId )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:440:6: ^( keyWordOrId )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_keyWordOrId.nextNode(), root_1);
@@ -6073,44 +6229,44 @@ public class CMISParser extends Parser {
};
// $ANTLR start signedNumericLiteral
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:441:1: signedNumericLiteral : ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:443:1: signedNumericLiteral : ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral );
public final CMISParser.signedNumericLiteral_return signedNumericLiteral() throws RecognitionException {
CMISParser.signedNumericLiteral_return retval = new CMISParser.signedNumericLiteral_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token FLOATING_POINT_LITERAL154=null;
- CMISParser.integerLiteral_return integerLiteral155 = null;
+ Token FLOATING_POINT_LITERAL158=null;
+ CMISParser.integerLiteral_return integerLiteral159 = null;
- Object FLOATING_POINT_LITERAL154_tree=null;
+ Object FLOATING_POINT_LITERAL158_tree=null;
RewriteRuleTokenStream stream_FLOATING_POINT_LITERAL=new RewriteRuleTokenStream(adaptor,"token FLOATING_POINT_LITERAL");
RewriteRuleSubtreeStream stream_integerLiteral=new RewriteRuleSubtreeStream(adaptor,"rule integerLiteral");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:442:2: ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral )
- int alt43=2;
- int LA43_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:444:2: ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral )
+ int alt44=2;
+ int LA44_0 = input.LA(1);
- if ( (LA43_0==FLOATING_POINT_LITERAL) ) {
- alt43=1;
+ if ( (LA44_0==FLOATING_POINT_LITERAL) ) {
+ alt44=1;
}
- else if ( (LA43_0==DECIMAL_INTEGER_LITERAL) ) {
- alt43=2;
+ else if ( (LA44_0==DECIMAL_INTEGER_LITERAL) ) {
+ alt44=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
- new NoViableAltException("", 43, 0, input);
+ new NoViableAltException("", 44, 0, input);
throw nvae;
}
- switch (alt43) {
+ switch (alt44) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:442:4: FLOATING_POINT_LITERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:444:4: FLOATING_POINT_LITERAL
{
- 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);
+ FLOATING_POINT_LITERAL158=(Token)match(input,FLOATING_POINT_LITERAL,FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1877); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_FLOATING_POINT_LITERAL.add(FLOATING_POINT_LITERAL158);
@@ -6125,9 +6281,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 443:3: -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
+ // 445:3: -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:443:6: ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:445:6: ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NUMERIC_LITERAL, "NUMERIC_LITERAL"), root_1);
@@ -6143,14 +6299,14 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:444:4: integerLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:446:4: integerLiteral
{
- pushFollow(FOLLOW_integerLiteral_in_signedNumericLiteral1848);
- integerLiteral155=integerLiteral();
+ pushFollow(FOLLOW_integerLiteral_in_signedNumericLiteral1892);
+ integerLiteral159=integerLiteral();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_integerLiteral.add(integerLiteral155.getTree());
+ if ( state.backtracking==0 ) stream_integerLiteral.add(integerLiteral159.getTree());
// AST REWRITE
@@ -6164,7 +6320,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 445:3: -> integerLiteral
+ // 447:3: -> integerLiteral
{
adaptor.addChild(root_0, stream_integerLiteral.nextTree());
@@ -6200,24 +6356,24 @@ public class CMISParser extends Parser {
};
// $ANTLR start integerLiteral
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:448:1: integerLiteral : DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:450:1: integerLiteral : DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) ;
public final CMISParser.integerLiteral_return integerLiteral() throws RecognitionException {
CMISParser.integerLiteral_return retval = new CMISParser.integerLiteral_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token DECIMAL_INTEGER_LITERAL156=null;
+ Token DECIMAL_INTEGER_LITERAL160=null;
- Object DECIMAL_INTEGER_LITERAL156_tree=null;
+ Object DECIMAL_INTEGER_LITERAL160_tree=null;
RewriteRuleTokenStream stream_DECIMAL_INTEGER_LITERAL=new RewriteRuleTokenStream(adaptor,"token DECIMAL_INTEGER_LITERAL");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:449:2: ( DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:449:4: DECIMAL_INTEGER_LITERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:451:2: ( DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:451:4: DECIMAL_INTEGER_LITERAL
{
- 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);
+ DECIMAL_INTEGER_LITERAL160=(Token)match(input,DECIMAL_INTEGER_LITERAL,FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1911); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_DECIMAL_INTEGER_LITERAL.add(DECIMAL_INTEGER_LITERAL160);
@@ -6232,9 +6388,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 450:3: -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
+ // 452:3: -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:450:6: ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:452:6: ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NUMERIC_LITERAL, "NUMERIC_LITERAL"), root_1);
@@ -6274,24 +6430,24 @@ public class CMISParser extends Parser {
};
// $ANTLR start characterStringLiteral
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:453:1: characterStringLiteral : QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:455:1: characterStringLiteral : QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) ;
public final CMISParser.characterStringLiteral_return characterStringLiteral() throws RecognitionException {
CMISParser.characterStringLiteral_return retval = new CMISParser.characterStringLiteral_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token QUOTED_STRING157=null;
+ Token QUOTED_STRING161=null;
- Object QUOTED_STRING157_tree=null;
+ Object QUOTED_STRING161_tree=null;
RewriteRuleTokenStream stream_QUOTED_STRING=new RewriteRuleTokenStream(adaptor,"token QUOTED_STRING");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:454:2: ( QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) )
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:454:4: QUOTED_STRING
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:456:2: ( QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:456:4: QUOTED_STRING
{
- 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);
+ QUOTED_STRING161=(Token)match(input,QUOTED_STRING,FOLLOW_QUOTED_STRING_in_characterStringLiteral1934); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_QUOTED_STRING.add(QUOTED_STRING161);
@@ -6306,9 +6462,9 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 455:3: -> ^( STRING_LITERAL QUOTED_STRING )
+ // 457:3: -> ^( STRING_LITERAL QUOTED_STRING )
{
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:455:6: ^( STRING_LITERAL QUOTED_STRING )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:457:6: ^( STRING_LITERAL QUOTED_STRING )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STRING_LITERAL, "STRING_LITERAL"), root_1);
@@ -6348,27 +6504,27 @@ public class CMISParser extends Parser {
};
// $ANTLR start keyWord
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:459:1: keyWord : ( SELECT | AS | UPPER | LOWER | FROM | JOIN | INNER | LEFT | OUTER | ON | WHERE | OR | AND | NOT | IN | LIKE | IS | NULL | ANY | CONTAINS | IN_FOLDER | IN_TREE | ORDER | BY | ASC | DESC | SCORE );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:461:1: keyWord : ( SELECT | AS | UPPER | LOWER | FROM | JOIN | INNER | LEFT | OUTER | ON | WHERE | OR | AND | NOT | IN | LIKE | IS | NULL | ANY | CONTAINS | IN_FOLDER | IN_TREE | ORDER | BY | ASC | DESC | SCORE );
public final CMISParser.keyWord_return keyWord() throws RecognitionException {
CMISParser.keyWord_return retval = new CMISParser.keyWord_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token set158=null;
+ Token set162=null;
- Object set158_tree=null;
+ Object set162_tree=null;
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:459:9: ( SELECT | AS | UPPER | LOWER | FROM | JOIN | INNER | LEFT | OUTER | ON | WHERE | OR | AND | NOT | IN | LIKE | IS | NULL | ANY | CONTAINS | IN_FOLDER | IN_TREE | ORDER | BY | ASC | DESC | SCORE )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:461:9: ( SELECT | AS | UPPER | LOWER | FROM | JOIN | INNER | LEFT | OUTER | ON | WHERE | OR | AND | NOT | IN | LIKE | IS | NULL | ANY | CONTAINS | IN_FOLDER | IN_TREE | ORDER | BY | ASC | DESC | SCORE )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
root_0 = (Object)adaptor.nil();
- set158=(Token)input.LT(1);
+ set162=(Token)input.LT(1);
if ( input.LA(1)==SELECT||input.LA(1)==AS||(input.LA(1)>=FROM && input.LA(1)<=ON)||(input.LA(1)>=WHERE && input.LA(1)<=NOT)||(input.LA(1)>=IN && input.LA(1)<=DESC)||(input.LA(1)>=UPPER && input.LA(1)<=SCORE) ) {
input.consume();
- if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set158));
+ if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set162));
state.errorRecovery=false;state.failed=false;
}
else {
@@ -6405,48 +6561,48 @@ public class CMISParser extends Parser {
};
// $ANTLR start keyWordOrId
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:488:1: keyWordOrId : ( keyWord -> keyWord | ID -> ID );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:490:1: keyWordOrId : ( keyWord -> keyWord | ID -> ID );
public final CMISParser.keyWordOrId_return keyWordOrId() throws RecognitionException {
CMISParser.keyWordOrId_return retval = new CMISParser.keyWordOrId_return();
retval.start = input.LT(1);
Object root_0 = null;
- Token ID160=null;
- CMISParser.keyWord_return keyWord159 = null;
+ Token ID164=null;
+ CMISParser.keyWord_return keyWord163 = null;
- Object ID160_tree=null;
+ Object ID164_tree=null;
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleSubtreeStream stream_keyWord=new RewriteRuleSubtreeStream(adaptor,"rule keyWord");
try {
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:489:2: ( keyWord -> keyWord | ID -> ID )
- int alt44=2;
- int LA44_0 = input.LA(1);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:491:2: ( keyWord -> keyWord | ID -> ID )
+ int alt45=2;
+ int LA45_0 = input.LA(1);
- if ( (LA44_0==SELECT||LA44_0==AS||(LA44_0>=FROM && LA44_0<=ON)||(LA44_0>=WHERE && LA44_0<=NOT)||(LA44_0>=IN && LA44_0<=DESC)||(LA44_0>=UPPER && LA44_0<=SCORE)) ) {
- alt44=1;
+ if ( (LA45_0==SELECT||LA45_0==AS||(LA45_0>=FROM && LA45_0<=ON)||(LA45_0>=WHERE && LA45_0<=NOT)||(LA45_0>=IN && LA45_0<=DESC)||(LA45_0>=UPPER && LA45_0<=SCORE)) ) {
+ alt45=1;
}
- else if ( (LA44_0==ID) ) {
- alt44=2;
+ else if ( (LA45_0==ID) ) {
+ alt45=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
- new NoViableAltException("", 44, 0, input);
+ new NoViableAltException("", 45, 0, input);
throw nvae;
}
- switch (alt44) {
+ switch (alt45) {
case 1 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:489:4: keyWord
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:491:4: keyWord
{
- pushFollow(FOLLOW_keyWord_in_keyWordOrId2099);
- keyWord159=keyWord();
+ pushFollow(FOLLOW_keyWord_in_keyWordOrId2143);
+ keyWord163=keyWord();
state._fsp--;
if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_keyWord.add(keyWord159.getTree());
+ if ( state.backtracking==0 ) stream_keyWord.add(keyWord163.getTree());
// AST REWRITE
@@ -6460,7 +6616,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 490:3: -> keyWord
+ // 492:3: -> keyWord
{
adaptor.addChild(root_0, stream_keyWord.nextTree());
@@ -6470,10 +6626,10 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis2\\ANTLR\\CMIS.g:491:4: ID
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:493:4: ID
{
- ID160=(Token)match(input,ID,FOLLOW_ID_in_keyWordOrId2111); if (state.failed) return retval;
- if ( state.backtracking==0 ) stream_ID.add(ID160);
+ ID164=(Token)match(input,ID,FOLLOW_ID_in_keyWordOrId2155); if (state.failed) return retval;
+ if ( state.backtracking==0 ) stream_ID.add(ID164);
@@ -6488,7 +6644,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
root_0 = (Object)adaptor.nil();
- // 492:3: -> ID
+ // 494:3: -> ID
{
adaptor.addChild(root_0, stream_ID.nextNode());
@@ -6538,7 +6694,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:4: ( tableName )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:5: tableName
{
- pushFollow(FOLLOW_tableName_in_synpred2_CMIS562);
+ pushFollow(FOLLOW_tableName_in_synpred2_CMIS566);
tableName();
state._fsp--;
@@ -6553,7 +6709,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:17: ( joinedTable )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:18: joinedTable
{
- pushFollow(FOLLOW_joinedTable_in_synpred3_CMIS640);
+ pushFollow(FOLLOW_joinedTable_in_synpred3_CMIS644);
joinedTable();
state._fsp--;
@@ -6568,7 +6724,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:35: ( joinSpecification )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:36: joinSpecification
{
- pushFollow(FOLLOW_joinSpecification_in_synpred4_CMIS737);
+ pushFollow(FOLLOW_joinSpecification_in_synpred4_CMIS741);
joinSpecification();
state._fsp--;
@@ -6583,7 +6739,7 @@ public class CMISParser extends Parser {
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:6: ( columnReference )
// W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:7: columnReference
{
- pushFollow(FOLLOW_columnReference_in_synpred5_CMIS1315);
+ pushFollow(FOLLOW_columnReference_in_synpred5_CMIS1319);
columnReference();
state._fsp--;
@@ -6593,6 +6749,21 @@ public class CMISParser extends Parser {
}
// $ANTLR end synpred5_CMIS
+ // $ANTLR start synpred6_CMIS
+ public final void synpred6_CMIS_fragment() throws RecognitionException {
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:11: ( columnReference )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:353:12: columnReference
+ {
+ pushFollow(FOLLOW_columnReference_in_synpred6_CMIS1357);
+ columnReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+ }
+ // $ANTLR end synpred6_CMIS
+
// Delegated rules
public final boolean synpred2_CMIS() {
@@ -6609,6 +6780,20 @@ public class CMISParser extends Parser {
state.failed=false;
return success;
}
+ public final boolean synpred6_CMIS() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred6_CMIS_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
public final boolean synpred4_CMIS() {
state.backtracking++;
int start = input.mark();
@@ -6669,7 +6854,8 @@ public class CMISParser extends Parser {
protected DFA25 dfa25 = new DFA25(this);
protected DFA27 dfa27 = new DFA27(this);
- protected DFA41 dfa41 = new DFA41(this);
+ protected DFA35 dfa35 = new DFA35(this);
+ protected DFA42 dfa42 = new DFA42(this);
static final String DFA25_eotS =
"\31\uffff";
static final String DFA25_eofS =
@@ -6766,14 +6952,14 @@ public class CMISParser extends Parser {
"\uffff\1\106\1\111\1\106\1\uffff\1\106\1\111\1\106\4\104\1\75\2"+
"\104\1\75\2\104\1\75\1\67\3\106";
static final String DFA27_acceptS =
- "\4\uffff\1\5\3\uffff\1\1\1\uffff\1\2\1\3\1\uffff\1\4\2\uffff\1"+
+ "\4\uffff\1\5\3\uffff\1\1\1\uffff\1\2\1\4\1\uffff\1\3\2\uffff\1"+
"\6\11\uffff\1\7\3\uffff\1\10\22\uffff";
static final String DFA27_specialS =
"\61\uffff}>";
static final String[] DFA27_transitionS = {
"\1\10\2\uffff\1\10\4\uffff\6\10\1\uffff\4\10\5\uffff\4\10\1"+
"\3\1\5\1\6\1\7\4\10\2\4\1\1\1\2\2\4\3\10",
- "\1\14\1\10\7\uffff\1\10\3\uffff\1\11\5\10\1\12\1\13\1\15",
+ "\1\14\1\10\7\uffff\1\10\3\uffff\1\11\5\10\1\12\1\15\1\13",
"\1\16\2\uffff\1\16\4\uffff\6\16\1\uffff\4\16\5\uffff\14\16"+
"\2\uffff\1\17\3\uffff\3\16",
"\1\10\37\uffff\2\20",
@@ -6782,7 +6968,7 @@ public class CMISParser extends Parser {
"\1\22",
"\1\23",
"",
- "\1\12\1\13",
+ "\1\12\1\15",
"",
"",
"\1\24\1\25",
@@ -6793,10 +6979,10 @@ public class CMISParser extends Parser {
"\1\32\4\uffff\1\10\34\uffff\1\10\1\31\1\27\1\30\2\10",
"\1\36\4\uffff\1\10\34\uffff\1\10\1\35\1\33\1\34\2\10",
"\1\36\4\uffff\1\10\34\uffff\1\10\1\41\1\37\1\40\2\10",
- "\1\10\3\uffff\1\11\5\10\1\12\1\13\1\15",
+ "\1\10\3\uffff\1\11\5\10\1\12\1\15\1\13",
"\1\42\2\uffff\1\42\4\uffff\6\42\1\uffff\4\42\5\uffff\14\42"+
"\2\uffff\1\43\3\uffff\3\42",
- "\1\14\10\uffff\1\10\3\uffff\1\11\5\10\1\12\1\13\1\15",
+ "\1\14\10\uffff\1\10\3\uffff\1\11\5\10\1\12\1\15\1\13",
"\1\32\2\uffff\1\10\1\uffff\1\10\34\uffff\6\10",
"\1\44\2\uffff\1\44\4\uffff\6\44\1\uffff\4\44\5\uffff\14\44"+
"\2\uffff\1\45\3\uffff\3\44",
@@ -6822,7 +7008,7 @@ public class CMISParser extends Parser {
"\1\60",
"\1\60",
"\1\36\6\uffff\1\10\1\uffff\2\36\1\uffff\5\10\10\uffff\1\36",
- "\1\10\3\uffff\1\11\5\10\1\12\1\13\1\15",
+ "\1\10\3\uffff\1\11\5\10\1\12\1\15\1\13",
"\1\32\2\uffff\1\10\1\uffff\1\10\34\uffff\6\10",
"\1\36\2\uffff\1\10\1\uffff\1\10\34\uffff\6\10",
"\1\36\2\uffff\1\10\1\uffff\1\10\34\uffff\6\10"
@@ -6861,69 +7047,137 @@ 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 = {
+ static final String DFA35_eotS =
+ "\17\uffff";
+ static final String DFA35_eofS =
+ "\17\uffff";
+ static final String DFA35_minS =
+ "\1\103\1\42\1\35\1\103\1\57\2\104\1\67\1\35\2\uffff\1\42\2\104"+
+ "\1\67";
+ static final String DFA35_maxS =
+ "\1\104\1\67\1\111\1\104\1\70\2\104\1\67\1\111\2\uffff\1\67\2\104"+
+ "\1\67";
+ static final String DFA35_acceptS =
+ "\11\uffff\1\1\1\2\4\uffff";
+ static final String DFA35_specialS =
+ "\17\uffff}>";
+ static final String[] DFA35_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\3\24\uffff\1\4",
+ "\1\5\2\uffff\1\5\4\uffff\6\5\1\uffff\4\5\5\uffff\14\5\2\uffff"+
+ "\1\6\3\uffff\3\5",
+ "\1\7\1\10",
+ "\1\12\10\uffff\1\11",
+ "\1\13",
+ "\1\13",
+ "\1\4",
+ "\1\14\2\uffff\1\14\4\uffff\6\14\1\uffff\4\14\5\uffff\14\14"+
+ "\2\uffff\1\15\3\uffff\3\14",
"",
"",
- "\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"
+ "\1\3\24\uffff\1\4",
+ "\1\16",
+ "\1\16",
+ "\1\4"
};
- 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 final short[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
+ static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
+ static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
+ static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
+ static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
+ static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
+ static final short[][] DFA35_transition;
static {
- int numStates = DFA41_transitionS.length;
- DFA41_transition = new short[numStates][];
+ int numStates = DFA35_transitionS.length;
+ DFA35_transition = new short[numStates][];
for (int i=0; i ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );";
+ return "350:1: nullPredicate : ( ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NULL -> ^( PRED_EXISTS columnReference NOT ) | ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS NOT NULL -> ^( PRED_EXISTS columnReference ) );";
+ }
+ }
+ static final String DFA42_eotS =
+ "\16\uffff";
+ static final String DFA42_eofS =
+ "\1\uffff\1\5\6\uffff\1\5\1\uffff\1\5\2\uffff\1\5";
+ static final String DFA42_minS =
+ "\1\103\1\37\1\35\1\uffff\1\103\1\uffff\2\104\1\37\1\35\1\37\2\104"+
+ "\1\37";
+ static final String DFA42_maxS =
+ "\1\104\1\100\1\111\1\uffff\1\104\1\uffff\2\104\1\100\1\111\1\100"+
+ "\2\104\1\100";
+ static final String DFA42_acceptS =
+ "\3\uffff\1\2\1\uffff\1\1\10\uffff";
+ static final String DFA42_specialS =
+ "\16\uffff}>";
+ static final String[] DFA42_transitionS = {
+ "\1\1\1\2",
+ "\1\5\2\uffff\1\4\34\uffff\2\3",
+ "\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\5\37\uffff\2\3",
+ "\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\5\2\uffff\1\4\34\uffff\2\3",
+ "\1\15",
+ "\1\15",
+ "\1\5\37\uffff\2\3"
+ };
+
+ static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
+ static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
+ static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
+ static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
+ static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
+ static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
+ static final short[][] DFA42_transition;
+
+ static {
+ int numStates = DFA42_transitionS.length;
+ DFA42_transition = new short[numStates][];
+ for (int i=0; i ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );";
}
}
@@ -6956,147 +7210,152 @@ public class CMISParser extends Parser {
public static final BitSet FOLLOW_LPAREN_in_valueFunction472 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
public static final BitSet FOLLOW_functionArgument_in_valueFunction474 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
public static final BitSet FOLLOW_RPAREN_in_valueFunction477 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_qualifier_in_functionArgument508 = new BitSet(new long[]{0x0000000400000000L});
- public static final BitSet FOLLOW_DOT_in_functionArgument510 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_columnName_in_functionArgument512 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_identifier_in_functionArgument536 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literalOrParameterName_in_functionArgument546 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_tableName_in_qualifier567 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_correlationName_in_qualifier579 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_FROM_in_fromClause616 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_tableReference_in_fromClause618 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_singleTable_in_tableReference636 = new BitSet(new long[]{0x000001C000000002L});
- public static final BitSet FOLLOW_joinedTable_in_tableReference645 = new BitSet(new long[]{0x000001C000000002L});
- public static final BitSet FOLLOW_tableName_in_singleTable674 = new BitSet(new long[]{0xFFE0F7E160000002L,0x0000000000000399L});
- public static final BitSet FOLLOW_AS_in_singleTable678 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_correlationName_in_singleTable681 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LPAREN_in_singleTable702 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_joinedTables_in_singleTable704 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_singleTable706 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_joinType_in_joinedTable728 = new BitSet(new long[]{0x0000004000000000L});
- public static final BitSet FOLLOW_JOIN_in_joinedTable731 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_tableReference_in_joinedTable733 = new BitSet(new long[]{0x0000040000000002L});
- public static final BitSet FOLLOW_joinSpecification_in_joinedTable742 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_singleTable_in_joinedTables773 = new BitSet(new long[]{0x000001C000000000L});
- public static final BitSet FOLLOW_joinedTable_in_joinedTables775 = new BitSet(new long[]{0x000001C000000002L});
- public static final BitSet FOLLOW_INNER_in_joinType802 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LEFT_in_joinType814 = new BitSet(new long[]{0x0000020000000002L});
- public static final BitSet FOLLOW_OUTER_in_joinType816 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ON_in_joinSpecification836 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_LPAREN_in_joinSpecification838 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_columnReference_in_joinSpecification842 = new BitSet(new long[]{0x0000080000000000L});
- public static final BitSet FOLLOW_EQUALS_in_joinSpecification844 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_columnReference_in_joinSpecification848 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_joinSpecification850 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_WHERE_in_whereClause900 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_searchOrCondition_in_whereClause902 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_searchAndCondition_in_searchOrCondition922 = new BitSet(new long[]{0x0000200000000002L});
- public static final BitSet FOLLOW_OR_in_searchOrCondition925 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_searchAndCondition_in_searchOrCondition927 = new BitSet(new long[]{0x0000200000000002L});
- public static final BitSet FOLLOW_searchNotCondition_in_searchAndCondition955 = new BitSet(new long[]{0x0000400000000002L});
- public static final BitSet FOLLOW_AND_in_searchAndCondition958 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_searchNotCondition_in_searchAndCondition960 = new BitSet(new long[]{0x0000400000000002L});
- public static final BitSet FOLLOW_NOT_in_searchNotCondition987 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_searchTest_in_searchNotCondition989 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_searchTest_in_searchNotCondition1004 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_predicate_in_searchTest1022 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_LPAREN_in_searchTest1033 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_searchOrCondition_in_searchTest1035 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_searchTest1037 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_comparisonPredicate_in_predicate1054 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_inPredicate_in_predicate1059 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_likePredicate_in_predicate1064 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_nullPredicate_in_predicate1069 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_quantifiedComparisonPredicate_in_predicate1075 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_quantifiedInPredicate_in_predicate1080 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_textSearchPredicate_in_predicate1085 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_folderPredicate_in_predicate1090 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_valueExpression_in_comparisonPredicate1102 = new BitSet(new long[]{0x001F080000000000L});
- public static final BitSet FOLLOW_compOp_in_comparisonPredicate1104 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_literalOrParameterName_in_comparisonPredicate1106 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_qualifier_in_functionArgument512 = new BitSet(new long[]{0x0000000400000000L});
+ public static final BitSet FOLLOW_DOT_in_functionArgument514 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_columnName_in_functionArgument516 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_functionArgument540 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literalOrParameterName_in_functionArgument550 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_tableName_in_qualifier571 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_correlationName_in_qualifier583 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FROM_in_fromClause620 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_tableReference_in_fromClause622 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_singleTable_in_tableReference640 = new BitSet(new long[]{0x000001C000000002L});
+ public static final BitSet FOLLOW_joinedTable_in_tableReference649 = new BitSet(new long[]{0x000001C000000002L});
+ public static final BitSet FOLLOW_tableName_in_singleTable678 = new BitSet(new long[]{0xFFE0F7E160000002L,0x0000000000000399L});
+ public static final BitSet FOLLOW_AS_in_singleTable682 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_correlationName_in_singleTable685 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_singleTable706 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_joinedTables_in_singleTable708 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_singleTable710 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_joinType_in_joinedTable732 = new BitSet(new long[]{0x0000004000000000L});
+ public static final BitSet FOLLOW_JOIN_in_joinedTable735 = new BitSet(new long[]{0xFFE0F7E960000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_tableReference_in_joinedTable737 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_joinSpecification_in_joinedTable746 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_singleTable_in_joinedTables777 = new BitSet(new long[]{0x000001C000000000L});
+ public static final BitSet FOLLOW_joinedTable_in_joinedTables779 = new BitSet(new long[]{0x000001C000000002L});
+ public static final BitSet FOLLOW_INNER_in_joinType806 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LEFT_in_joinType818 = new BitSet(new long[]{0x0000020000000002L});
+ public static final BitSet FOLLOW_OUTER_in_joinType820 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ON_in_joinSpecification840 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_LPAREN_in_joinSpecification842 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_columnReference_in_joinSpecification846 = new BitSet(new long[]{0x0000080000000000L});
+ public static final BitSet FOLLOW_EQUALS_in_joinSpecification848 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_columnReference_in_joinSpecification852 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_joinSpecification854 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_WHERE_in_whereClause904 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_searchOrCondition_in_whereClause906 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_searchAndCondition_in_searchOrCondition926 = new BitSet(new long[]{0x0000200000000002L});
+ public static final BitSet FOLLOW_OR_in_searchOrCondition929 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_searchAndCondition_in_searchOrCondition931 = new BitSet(new long[]{0x0000200000000002L});
+ public static final BitSet FOLLOW_searchNotCondition_in_searchAndCondition959 = new BitSet(new long[]{0x0000400000000002L});
+ public static final BitSet FOLLOW_AND_in_searchAndCondition962 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_searchNotCondition_in_searchAndCondition964 = new BitSet(new long[]{0x0000400000000002L});
+ public static final BitSet FOLLOW_NOT_in_searchNotCondition991 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_searchTest_in_searchNotCondition993 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_searchTest_in_searchNotCondition1008 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_predicate_in_searchTest1026 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_searchTest1037 = new BitSet(new long[]{0xFFE0F7F960000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_searchOrCondition_in_searchTest1039 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_searchTest1041 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_comparisonPredicate_in_predicate1058 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_inPredicate_in_predicate1063 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_likePredicate_in_predicate1068 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_nullPredicate_in_predicate1073 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_quantifiedComparisonPredicate_in_predicate1079 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_quantifiedInPredicate_in_predicate1084 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_textSearchPredicate_in_predicate1089 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_folderPredicate_in_predicate1094 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_valueExpression_in_comparisonPredicate1106 = new BitSet(new long[]{0x001F080000000000L});
+ public static final BitSet FOLLOW_compOp_in_comparisonPredicate1108 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_literalOrParameterName_in_comparisonPredicate1110 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_compOp0 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literal_in_literalOrParameterName1172 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_parameterName_in_literalOrParameterName1177 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_signedNumericLiteral_in_literal1190 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_characterStringLiteral_in_literal1195 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_inPredicate1207 = new BitSet(new long[]{0x0020800000000000L});
- public static final BitSet FOLLOW_NOT_in_inPredicate1209 = new BitSet(new long[]{0x0020000000000000L});
- public static final BitSet FOLLOW_IN_in_inPredicate1212 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_LPAREN_in_inPredicate1214 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_inValueList_in_inPredicate1216 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_inPredicate1218 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literalOrParameterName_in_inValueList1247 = new BitSet(new long[]{0x0000000080000002L});
- public static final BitSet FOLLOW_COMMA_in_inValueList1250 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_literalOrParameterName_in_inValueList1252 = new BitSet(new long[]{0x0000000080000002L});
- public static final BitSet FOLLOW_columnReference_in_likePredicate1278 = new BitSet(new long[]{0x0040800000000000L});
- public static final BitSet FOLLOW_NOT_in_likePredicate1280 = new BitSet(new long[]{0x0040000000000000L});
- public static final BitSet FOLLOW_LIKE_in_likePredicate1283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000064L});
- public static final BitSet FOLLOW_characterStringLiteral_in_likePredicate1285 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_nullPredicate1319 = new BitSet(new long[]{0x0080000000000000L});
- public static final BitSet FOLLOW_multiValuedColumnReference_in_nullPredicate1323 = new BitSet(new long[]{0x0080000000000000L});
- public static final BitSet FOLLOW_IS_in_nullPredicate1326 = new BitSet(new long[]{0x0100800000000000L});
- public static final BitSet FOLLOW_NOT_in_nullPredicate1328 = new BitSet(new long[]{0x0100000000000000L});
- public static final BitSet FOLLOW_NULL_in_nullPredicate1331 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_literalOrParameterName_in_quantifiedComparisonPredicate1356 = new BitSet(new long[]{0x001F080000000000L});
- public static final BitSet FOLLOW_compOp_in_quantifiedComparisonPredicate1358 = new BitSet(new long[]{0x0200000000000000L});
- public static final BitSet FOLLOW_ANY_in_quantifiedComparisonPredicate1360 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_multiValuedColumnReference_in_quantifiedComparisonPredicate1362 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ANY_in_quantifiedInPredicate1391 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
- public static final BitSet FOLLOW_multiValuedColumnReference_in_quantifiedInPredicate1393 = new BitSet(new long[]{0x0020800000000000L});
- public static final BitSet FOLLOW_NOT_in_quantifiedInPredicate1395 = new BitSet(new long[]{0x0020000000000000L});
- public static final BitSet FOLLOW_IN_in_quantifiedInPredicate1398 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_LPAREN_in_quantifiedInPredicate1401 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
- public static final BitSet FOLLOW_inValueList_in_quantifiedInPredicate1403 = new BitSet(new long[]{0x0000001000000000L});
- public static final BitSet FOLLOW_RPAREN_in_quantifiedInPredicate1405 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_CONTAINS_in_textSearchPredicate1434 = new BitSet(new long[]{0x0000000800000000L});
- public static final BitSet FOLLOW_LPAREN_in_textSearchPredicate1436 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
- public static final BitSet FOLLOW_qualifier_in_textSearchPredicate1439 = new BitSet(new long[]{0x0000000080000000L});
- public static final BitSet FOLLOW_COMMA_in_textSearchPredicate1441 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
- 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_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_literal_in_literalOrParameterName1176 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parameterName_in_literalOrParameterName1181 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_signedNumericLiteral_in_literal1194 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_characterStringLiteral_in_literal1199 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_inPredicate1211 = new BitSet(new long[]{0x0020800000000000L});
+ public static final BitSet FOLLOW_NOT_in_inPredicate1213 = new BitSet(new long[]{0x0020000000000000L});
+ public static final BitSet FOLLOW_IN_in_inPredicate1216 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_LPAREN_in_inPredicate1218 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_inValueList_in_inPredicate1220 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_inPredicate1222 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literalOrParameterName_in_inValueList1251 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_COMMA_in_inValueList1254 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_literalOrParameterName_in_inValueList1256 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_columnReference_in_likePredicate1282 = new BitSet(new long[]{0x0040800000000000L});
+ public static final BitSet FOLLOW_NOT_in_likePredicate1284 = new BitSet(new long[]{0x0040000000000000L});
+ public static final BitSet FOLLOW_LIKE_in_likePredicate1287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000064L});
+ public static final BitSet FOLLOW_characterStringLiteral_in_likePredicate1289 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_nullPredicate1323 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_multiValuedColumnReference_in_nullPredicate1327 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_IS_in_nullPredicate1330 = new BitSet(new long[]{0x0100000000000000L});
+ public static final BitSet FOLLOW_NULL_in_nullPredicate1332 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_nullPredicate1361 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_multiValuedColumnReference_in_nullPredicate1365 = new BitSet(new long[]{0x0080000000000000L});
+ public static final BitSet FOLLOW_IS_in_nullPredicate1368 = new BitSet(new long[]{0x0000800000000000L});
+ public static final BitSet FOLLOW_NOT_in_nullPredicate1370 = new BitSet(new long[]{0x0100000000000000L});
+ public static final BitSet FOLLOW_NULL_in_nullPredicate1372 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_literalOrParameterName_in_quantifiedComparisonPredicate1400 = new BitSet(new long[]{0x001F080000000000L});
+ public static final BitSet FOLLOW_compOp_in_quantifiedComparisonPredicate1402 = new BitSet(new long[]{0x0200000000000000L});
+ public static final BitSet FOLLOW_ANY_in_quantifiedComparisonPredicate1404 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_multiValuedColumnReference_in_quantifiedComparisonPredicate1406 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ANY_in_quantifiedInPredicate1435 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_multiValuedColumnReference_in_quantifiedInPredicate1437 = new BitSet(new long[]{0x0020800000000000L});
+ public static final BitSet FOLLOW_NOT_in_quantifiedInPredicate1439 = new BitSet(new long[]{0x0020000000000000L});
+ public static final BitSet FOLLOW_IN_in_quantifiedInPredicate1442 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_LPAREN_in_quantifiedInPredicate1445 = new BitSet(new long[]{0xFFE0F7F160000000L,0x00000000000003FFL});
+ public static final BitSet FOLLOW_inValueList_in_quantifiedInPredicate1447 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_quantifiedInPredicate1449 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_CONTAINS_in_textSearchPredicate1478 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_LPAREN_in_textSearchPredicate1480 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
+ public static final BitSet FOLLOW_qualifier_in_textSearchPredicate1483 = new BitSet(new long[]{0x0000000080000000L});
+ public static final BitSet FOLLOW_COMMA_in_textSearchPredicate1485 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
+ public static final BitSet FOLLOW_COMMA_in_textSearchPredicate1489 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x000000000000039DL});
+ public static final BitSet FOLLOW_textSearchExpression_in_textSearchPredicate1493 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_textSearchPredicate1495 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IN_FOLDER_in_folderPredicate1520 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1523 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IN_TREE_in_folderPredicate1544 = new BitSet(new long[]{0x0000000800000000L});
+ public static final BitSet FOLLOW_folderPredicateArgs_in_folderPredicate1546 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_LPAREN_in_folderPredicateArgs1568 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_qualifier_in_folderPredicateArgs1571 = new BitSet(new long[]{0x0000000080000000L});
+ public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1573 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_COMMA_in_folderPredicateArgs1577 = new BitSet(new long[]{0xFFE0F7E1E0000000L,0x00000000000003FDL});
+ public static final BitSet FOLLOW_folderId_in_folderPredicateArgs1581 = new BitSet(new long[]{0x0000001000000000L});
+ public static final BitSet FOLLOW_RPAREN_in_folderPredicateArgs1583 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ORDER_in_orderByClause1622 = new BitSet(new long[]{0x4000000000000000L});
+ public static final BitSet FOLLOW_BY_in_orderByClause1624 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_sortSpecification_in_orderByClause1626 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_COMMA_in_orderByClause1630 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_sortSpecification_in_orderByClause1632 = new BitSet(new long[]{0x0000000080000002L});
+ public static final BitSet FOLLOW_columnReference_in_sortSpecification1658 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_sortSpecification1676 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000001L});
+ public static final BitSet FOLLOW_ASC_in_sortSpecification1682 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DESC_in_sortSpecification1688 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_correlationName1715 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_tableName1729 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_columnName1747 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_identifier_in_multiValuedColumnName1766 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_COLON_in_parameterName1784 = new BitSet(new long[]{0xFFE0F7E160000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_identifier_in_parameterName1786 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_characterStringLiteral_in_folderId1809 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_QUOTED_STRING_in_textSearchExpression1830 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ID_in_identifier1842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1853 = new BitSet(new long[]{0xFFE0F7E120000000L,0x0000000000000399L});
+ public static final BitSet FOLLOW_keyWordOrId_in_identifier1855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+ public static final BitSet FOLLOW_DOUBLE_QUOTE_in_identifier1857 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_signedNumericLiteral1877 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_integerLiteral_in_signedNumericLiteral1892 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_INTEGER_LITERAL_in_integerLiteral1911 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_QUOTED_STRING_in_characterStringLiteral1934 = 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_keyWordOrId2099 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_ID_in_keyWordOrId2111 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_keyWord_in_keyWordOrId2143 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_ID_in_keyWordOrId2155 = 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});
- public static final BitSet FOLLOW_joinSpecification_in_synpred4_CMIS737 = new BitSet(new long[]{0x0000000000000002L});
- public static final BitSet FOLLOW_columnReference_in_synpred5_CMIS1315 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_tableName_in_synpred2_CMIS566 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_joinedTable_in_synpred3_CMIS644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_joinSpecification_in_synpred4_CMIS741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_synpred5_CMIS1319 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_columnReference_in_synpred6_CMIS1357 = new BitSet(new long[]{0x0000000000000002L});
}
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/Argument.java b/source/java/org/alfresco/repo/search/impl/querymodel/Argument.java
index b3f3ac8da9..9186ed6553 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/Argument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/Argument.java
@@ -36,5 +36,5 @@ public interface Argument
{
public String getName();
- public Serializable getValue();
+ public Serializable getValue(FunctionEvaluationContext context);
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java
index b368ecac1c..18f2ea1c7b 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java
@@ -27,9 +27,12 @@ package org.alfresco.repo.search.impl.querymodel;
import java.io.Serializable;
import java.util.Map;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.QName;
+import org.apache.lucene.search.Query;
/**
* @author andyh
@@ -44,4 +47,10 @@ public interface FunctionEvaluationContext
public Serializable getProperty(NodeRef nodeRef, QName propertyQName);
public NodeService getNodeService();
+
+ public Float getScore();
+
+ public Query buildLuceneEquality(LuceneQueryParser lqp, QName propertyQName, Serializable value) throws ParseException;
+
+ public Query buildLuceneExists(LuceneQueryParser lqp, QName propertyQName, Boolean not) throws ParseException;
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/LiteralArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/LiteralArgument.java
index dd196b31cb..65678484eb 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/LiteralArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/LiteralArgument.java
@@ -24,8 +24,6 @@
*/
package org.alfresco.repo.search.impl.querymodel;
-import java.io.Serializable;
-
import org.alfresco.service.namespace.QName;
/**
@@ -34,6 +32,4 @@ import org.alfresco.service.namespace.QName;
public interface LiteralArgument extends StaticArgument
{
public QName getType();
-
- public Serializable getValue();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/QueryEngine.java b/source/java/org/alfresco/repo/search/impl/querymodel/QueryEngine.java
index 4543b21814..bbeb0d00e8 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/QueryEngine.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/QueryEngine.java
@@ -24,8 +24,6 @@
*/
package org.alfresco.repo.search.impl.querymodel;
-import java.io.IOException;
-
import org.alfresco.service.cmr.search.ResultSet;
/**
@@ -34,7 +32,7 @@ import org.alfresco.service.cmr.search.ResultSet;
*/
public interface QueryEngine
{
- public ResultSet executeQuery(Query query, String selectorName, QueryOptions options) throws IOException;
+ public ResultSet executeQuery(Query query, String selectorName, QueryOptions options, FunctionEvaluationContext functionContext);
public QueryModelFactory getQueryModelFactory();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunctionArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunctionArgument.java
index f4d34bc099..04e7212407 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunctionArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunctionArgument.java
@@ -30,6 +30,7 @@ import java.util.Map;
import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Function;
import org.alfresco.repo.search.impl.querymodel.FunctionArgument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
/**
* @author andyh
@@ -52,9 +53,9 @@ public class BaseFunctionArgument extends BaseDynamicArgument implements Functio
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ return function.getValue(arguments, context);
}
/* (non-Javadoc)
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
index bcbea8f1d3..b10626b6b6 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseListArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseListArgument.java
@@ -25,9 +25,11 @@
package org.alfresco.repo.search.impl.querymodel.impl;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.ListArgument;
/**
@@ -58,9 +60,16 @@ public class BaseListArgument extends BaseStaticArgument implements ListArgument
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ ArrayList answer = new ArrayList(arguments.size());
+ for(Argument argument : arguments)
+ {
+ Serializable value = argument.getValue(context);
+ answer.add(value);
+ }
+ return answer;
+
}
public String toString()
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseLiteralArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseLiteralArgument.java
index b80d2d4008..e505aa025c 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseLiteralArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseLiteralArgument.java
@@ -26,6 +26,7 @@ package org.alfresco.repo.search.impl.querymodel.impl;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.LiteralArgument;
import org.alfresco.service.namespace.QName;
@@ -50,7 +51,7 @@ public class BaseLiteralArgument extends BaseStaticArgument implements LiteralAr
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.LiteralArgument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
return value;
}
@@ -69,7 +70,7 @@ public class BaseLiteralArgument extends BaseStaticArgument implements LiteralAr
builder.append("BaseLiteralArgument[");
builder.append("name=").append(getName()).append(", ");
builder.append("type=").append(getType()).append(", ");
- builder.append("value=").append(getValue()).append(", ");
+ builder.append("value=").append(getValue(null)).append(", ");
builder.append("]");
return builder.toString();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseParameterArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseParameterArgument.java
index f522541b04..c395db4ac8 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseParameterArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseParameterArgument.java
@@ -26,6 +26,7 @@ package org.alfresco.repo.search.impl.querymodel.impl;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.ParameterArgument;
/**
@@ -56,7 +57,7 @@ public class BaseParameterArgument extends BaseStaticArgument implements Paramet
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
throw new UnsupportedOperationException();
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BasePropertyArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BasePropertyArgument.java
index 45889c377b..582d4ac7d0 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BasePropertyArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BasePropertyArgument.java
@@ -26,7 +26,9 @@ package org.alfresco.repo.search.impl.querymodel.impl;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
+import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
/**
@@ -74,9 +76,10 @@ public class BasePropertyArgument extends BaseDynamicArgument implements Propert
*
* @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ NodeRef nodeRef = context.getNodeRefs().get(getSelector());
+ return context.getProperty(nodeRef, getPropertyName());
}
public String toString()
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseSelectorArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseSelectorArgument.java
index dbae43657e..9d82d2ce45 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseSelectorArgument.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseSelectorArgument.java
@@ -26,6 +26,7 @@ package org.alfresco.repo.search.impl.querymodel.impl;
import java.io.Serializable;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.SelectorArgument;
/**
@@ -60,9 +61,9 @@ public class BaseSelectorArgument extends BaseStaticArgument implements Selecto
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
*/
- public Serializable getValue()
+ public Serializable getValue(FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ return getSelector();
}
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
index d98f5a020b..9eb087abbe 100644
--- 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
@@ -77,9 +77,9 @@ public class Child extends BaseFunction
public Serializable getValue(Map args, FunctionEvaluationContext context)
{
Argument selectorArgument = args.get(ARG_SELECTOR);
- String selectorName = DefaultTypeConverter.INSTANCE.convert(String.class, selectorArgument.getValue());
+ String selectorName = DefaultTypeConverter.INSTANCE.convert(String.class, selectorArgument.getValue(context));
Argument parentArgument = args.get(ARG_PARENT);
- NodeRef parent = DefaultTypeConverter.INSTANCE.convert(NodeRef.class, parentArgument.getValue());
+ NodeRef parent = DefaultTypeConverter.INSTANCE.convert(NodeRef.class, parentArgument.getValue(context));
NodeRef child = context.getNodeRefs().get(selectorName);
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Lower.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Lower.java
index df27f3a65a..cc95344281 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Lower.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/functions/Lower.java
@@ -32,9 +32,12 @@ import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
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;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
/**
* @author andyh
@@ -70,7 +73,14 @@ public class Lower extends BaseFunction
*/
public Serializable getValue(Map args, FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ Argument arg = args.get(ARG_PROPERTY);
+ if(!(arg instanceof PropertyArgument))
+ {
+ throw new QueryModelException("Function "+NAME+" requires a property argument");
+ }
+ Serializable value = arg.getValue(context);
+ String stringValue = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ return stringValue.toLowerCase();
}
}
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 df9f3d3648..52118bf3d0 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
@@ -37,8 +37,6 @@ import org.alfresco.repo.search.impl.querymodel.QueryModelException;
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;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.namespace.QName;
/**
* @author andyh
@@ -79,13 +77,7 @@ public class PropertyAccessor extends BaseFunction
{
throw new QueryModelException("Function "+NAME+" requires a property argument");
}
- PropertyArgument propertyArgument = (PropertyArgument)arg;
- String selectorName = propertyArgument.getSelector();
- QName propertyQName = propertyArgument.getPropertyName();
-
- NodeRef nodeRef = context.getNodeRefs().get(selectorName);
- return context.getProperty(nodeRef, propertyQName);
-
+ return arg.getValue(context);
}
}
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 888d1721a0..1923641914 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
@@ -70,7 +70,15 @@ public class Score extends BaseFunction
*/
public Serializable getValue(Map args, FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ Argument qualifier = args.get(ARG_QUALIFIER);
+ if(qualifier != null)
+ {
+ return context.getScores().get(qualifier.getValue(context));
+ }
+ else
+ {
+ return context.getScore();
+ }
}
}
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 c572975cbb..fa393d5fa9 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
@@ -32,9 +32,12 @@ import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.Multiplicity;
+import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
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;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
/**
* @author andyh
@@ -70,7 +73,14 @@ public class Upper extends BaseFunction
*/
public Serializable getValue(Map args, FunctionEvaluationContext context)
{
- throw new UnsupportedOperationException();
+ Argument arg = args.get(ARG_PROPERTY);
+ if(!(arg instanceof PropertyArgument))
+ {
+ throw new QueryModelException("Function "+NAME+" requires a property argument");
+ }
+ Serializable value = arg.getValue(context);
+ String stringValue = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ return stringValue.toUpperCase();
}
}
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
index ea2c03fc63..fc3e8c8265 100644
--- 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
@@ -25,15 +25,22 @@
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.util.List;
+import java.util.Map;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.Negation;
import org.alfresco.repo.search.impl.querymodel.impl.BaseConjunction;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.BooleanClause.Occur;
/**
* @author andyh
- *
*/
-public class LuceneConjunction extends BaseConjunction
+public class LuceneConjunction extends BaseConjunction implements LuceneQueryBuilderComponent
{
/**
@@ -44,4 +51,42 @@ public class LuceneConjunction extends BaseConjunction
super(constraints);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(java.lang.String,
+ * java.util.Map, org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext,
+ * org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ BooleanQuery query = new BooleanQuery();
+ for (Constraint constraint : getConstraints())
+ {
+ if (constraint instanceof LuceneQueryBuilderComponent)
+ {
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) constraint;
+ Query constraintQuery = luceneQueryBuilderComponent.addComponent(selector, functionArgs, luceneContext, functionContext);
+ if (constraintQuery != null)
+ {
+ if (constraint instanceof Negation)
+ {
+ query.add(constraintQuery, Occur.MUST_NOT);
+ }
+ else
+ {
+ query.add(constraintQuery, Occur.MUST);
+ }
+ }
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+ return query;
+
+ }
+
}
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
index f3856e5b46..9cf8789d8b 100644
--- 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
@@ -25,15 +25,23 @@
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.util.List;
+import java.util.Map;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.Negation;
import org.alfresco.repo.search.impl.querymodel.impl.BaseDisjunction;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.BooleanClause.Occur;
/**
* @author andyh
*
*/
-public class LuceneDisjunction extends BaseDisjunction
+public class LuceneDisjunction extends BaseDisjunction implements LuceneQueryBuilderComponent
{
/**
@@ -44,4 +52,39 @@ public class LuceneDisjunction extends BaseDisjunction
super(constraints);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(java.lang.String, java.util.Map, org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext, org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ BooleanQuery query = new BooleanQuery();
+ for(Constraint constraint : getConstraints())
+ {
+ if (constraint instanceof LuceneQueryBuilderComponent)
+ {
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) constraint;
+ Query constraintQuery = luceneQueryBuilderComponent.addComponent(selector, functionArgs, luceneContext, functionContext);
+ if (constraintQuery != null)
+ {
+ if (constraint instanceof Negation)
+ {
+ query.add(constraintQuery, Occur.MUST_NOT);
+ }
+ else
+ {
+ query.add(constraintQuery, Occur.SHOULD);
+ }
+ }
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+ return query;
+
+
+ }
+
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionalConstraint.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionalConstraint.java
index f69d78515f..8c79be136f 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionalConstraint.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionalConstraint.java
@@ -26,15 +26,18 @@ package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.util.Map;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Function;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.BaseFunctionalConstraint;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneFunctionalConstraint extends BaseFunctionalConstraint
+public class LuceneFunctionalConstraint extends BaseFunctionalConstraint implements LuceneQueryBuilderComponent
{
/**
@@ -46,4 +49,25 @@ public class LuceneFunctionalConstraint extends BaseFunctionalConstraint
super(function, arguments);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery, org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService, java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext) throws ParseException
+ {
+ Function function = getFunction();
+ if(function != null)
+ {
+ if(function instanceof LuceneQueryBuilderComponent)
+ {
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent)function;
+ return luceneQueryBuilderComponent.addComponent(selector, getFunctionArguments(), luceneContext, functionContext);
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+ return null;
+ }
+
}
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
index e337dafef3..9f88b39d27 100644
--- 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
@@ -24,14 +24,20 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.BaseNegation;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneNegation extends BaseNegation
+public class LuceneNegation extends BaseNegation implements LuceneQueryBuilderComponent
{
/**
@@ -42,4 +48,22 @@ public class LuceneNegation extends BaseNegation
super(constraint);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(java.lang.String, java.util.Map, org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext, org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ if (getConstraint() instanceof LuceneQueryBuilderComponent)
+ {
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) getConstraint();
+ Query constraintQuery = luceneQueryBuilderComponent.addComponent(selector, functionArgs, luceneContext, functionContext);
+ return constraintQuery;
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
}
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
index 64c3335675..62dd58eee1 100644
--- 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
@@ -26,14 +26,18 @@ package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.util.List;
+import org.alfresco.repo.search.impl.lucene.ParseException;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.Negation;
import org.alfresco.repo.search.impl.querymodel.Ordering;
import org.alfresco.repo.search.impl.querymodel.Selector;
import org.alfresco.repo.search.impl.querymodel.Source;
import org.alfresco.repo.search.impl.querymodel.impl.BaseQuery;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.BooleanClause.Occur;
/**
* @author andyh
@@ -52,21 +56,26 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
super(columns, source, constraint, orderings);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilder#buildQuery()
*/
- public BooleanQuery buildQuery(String selectorName, DictionaryService dictionaryService)
+ public Query buildQuery(String selectorName, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext) throws ParseException
{
+
BooleanQuery luceneQuery = new BooleanQuery();
- BooleanQuery current = luceneQuery;
Selector selector = getSource().getSelector(selectorName);
- if(selector != null)
+ if (selector != null)
{
- if(selector instanceof LuceneQueryBuilderComponent)
+ if (selector instanceof LuceneQueryBuilderComponent)
{
- LuceneQueryBuilderComponent LuceneQueryBuilderComponent = (LuceneQueryBuilderComponent)selector;
- current = LuceneQueryBuilderComponent.addComponent(luceneQuery, current, dictionaryService);
- return luceneQuery;
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) selector;
+ Query selectorQuery = luceneQueryBuilderComponent.addComponent(selectorName, null, luceneContext, functionContext);
+ if (selectorQuery != null)
+ {
+ luceneQuery.add(selectorQuery, Occur.MUST);
+ }
}
else
{
@@ -77,7 +86,34 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
{
throw new UnsupportedOperationException();
}
-
+
+ Constraint constraint = getConstraint();
+ if (constraint != null)
+ {
+ if (constraint instanceof LuceneQueryBuilderComponent)
+ {
+ LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) constraint;
+ Query constraintQuery = luceneQueryBuilderComponent.addComponent(selectorName, null, luceneContext, functionContext);
+ if (constraintQuery != null)
+ {
+ if (constraint instanceof Negation)
+ {
+ luceneQuery.add(constraintQuery, Occur.MUST_NOT);
+ }
+ else
+ {
+ luceneQuery.add(constraintQuery, Occur.MUST);
+ }
+ }
+ }
+ else
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ return luceneQuery;
+
}
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilder.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilder.java
index 8140ba3940..554f0e215b 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilder.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilder.java
@@ -24,13 +24,14 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
-import org.apache.lucene.search.BooleanQuery;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*/
public interface LuceneQueryBuilder
{
- public BooleanQuery buildQuery(String selectorName, DictionaryService dictionaryService);
+ public Query buildQuery(String selectorName, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext) throws ParseException;
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderComponent.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderComponent.java
index 57b726b4e1..7b71d065af 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderComponent.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderComponent.java
@@ -24,14 +24,17 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
-import org.apache.lucene.search.BooleanQuery;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
- *
*/
public interface LuceneQueryBuilderComponent
{
- public BooleanQuery addComponent(BooleanQuery base, BooleanQuery current, DictionaryService dictionaryService);
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext) throws ParseException;
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java
new file mode 100644
index 0000000000..ddcc271b06
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.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.lucene;
+
+import org.alfresco.repo.search.impl.lucene.LuceneAnalyser;
+import org.alfresco.repo.search.impl.lucene.LuceneConfig;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.QueryParser;
+import org.alfresco.repo.tenant.TenantService;
+import org.alfresco.service.cmr.dictionary.DictionaryService;
+import org.alfresco.service.cmr.search.SearchParameters;
+import org.alfresco.service.namespace.NamespacePrefixResolver;
+
+/**
+ * @author andyh
+ */
+public class LuceneQueryBuilderContext
+{
+ private LuceneQueryParser lqp;
+
+ private NamespacePrefixResolver namespacePrefixResolver;
+
+ public LuceneQueryBuilderContext(DictionaryService dictionaryService, NamespacePrefixResolver namespacePrefixResolver, TenantService tenantService,
+ SearchParameters searchParameters, LuceneConfig config)
+ {
+ LuceneAnalyser analyzer = new LuceneAnalyser(dictionaryService, searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters
+ .getMlAnalaysisMode());
+ lqp = new LuceneQueryParser("TEXT", analyzer);
+ lqp.setDefaultOperator(QueryParser.OR_OPERATOR);
+ lqp.setDictionaryService(dictionaryService);
+ lqp.setNamespacePrefixResolver(namespacePrefixResolver);
+ lqp.setTenantService(tenantService);
+ lqp.setSearchParameters(searchParameters);
+ lqp.setLuceneConfig(config);
+
+ this.namespacePrefixResolver = namespacePrefixResolver;
+ }
+
+ /**
+ * @return
+ */
+ public LuceneQueryParser getLuceneQueryParser()
+ {
+ return lqp;
+ }
+
+ /**
+ * @return
+ */
+ public NamespacePrefixResolver getNamespacePrefixResolver()
+ {
+ return namespacePrefixResolver;
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java
index 4ab25ca9c3..0b02ec02cf 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java
@@ -26,10 +26,13 @@ package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.io.IOException;
+import org.alfresco.repo.search.SearcherException;
import org.alfresco.repo.search.impl.lucene.ClosingIndexSearcher;
import org.alfresco.repo.search.impl.lucene.LuceneIndexerAndSearcher;
import org.alfresco.repo.search.impl.lucene.LuceneResultSet;
import org.alfresco.repo.search.impl.lucene.LuceneSearcher;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.repo.search.impl.querymodel.QueryEngine;
import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
@@ -42,7 +45,7 @@ import org.alfresco.service.cmr.search.LimitBy;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
-import org.apache.lucene.search.BooleanQuery;
+import org.alfresco.service.namespace.NamespaceService;
import org.apache.lucene.search.Hits;
/**
@@ -58,6 +61,8 @@ public class LuceneQueryEngine implements QueryEngine
private TenantService tenantService;
+ private NamespaceService namespaceService;
+
/**
* @param dictionaryService
* the dictionaryService to set
@@ -94,47 +99,69 @@ public class LuceneQueryEngine implements QueryEngine
this.tenantService = tenantService;
}
+ /**
+ * @param namespaceService
+ * the namespaceService to set
+ */
+ public void setNamespaceService(NamespaceService namespaceService)
+ {
+ this.namespaceService = namespaceService;
+ }
+
public QueryModelFactory getQueryModelFactory()
{
return new LuceneQueryModelFactory();
}
- public ResultSet executeQuery(Query query, String selectorName, QueryOptions options) throws IOException
+ public ResultSet executeQuery(Query query, String selectorName, QueryOptions options, FunctionEvaluationContext functionContext)
{
- StoreRef storeRef = options.getStores().get(0);
- if (query instanceof LuceneQueryBuilder)
+ SearchParameters searchParameters = new SearchParameters();
+ searchParameters.setBulkFetch(options.getFetchSize() > 0);
+ searchParameters.setBulkFetchSize(options.getFetchSize());
+ if (options.getMaxItems() > 0)
{
- SearchService searchService = indexAndSearcher.getSearcher(storeRef, options.isIncludeInTransactionData());
- if (searchService instanceof LuceneSearcher)
+ searchParameters.setLimit(options.getMaxItems() + options.getSkipCount());
+ }
+ else
+ {
+ searchParameters.setLimitBy(LimitBy.UNLIMITED);
+ }
+ LuceneQueryBuilderContext luceneContext = new LuceneQueryBuilderContext(dictionaryService, namespaceService, tenantService, searchParameters, indexAndSearcher);
+ try
+ {
+ StoreRef storeRef = options.getStores().get(0);
+ if (query instanceof LuceneQueryBuilder)
{
- LuceneSearcher luceneSearcher = (LuceneSearcher) searchService;
- ClosingIndexSearcher searcher = luceneSearcher.getClosingIndexSearcher();
- LuceneQueryBuilder builder = (LuceneQueryBuilder) query;
- BooleanQuery luceneQuery = builder.buildQuery(selectorName, dictionaryService);
- System.out.println(luceneQuery);
- SearchParameters sp = new SearchParameters();
- sp.setBulkFetch(options.getFetchSize() > 0);
- sp.setBulkFetchSize(options.getFetchSize());
- if (options.getMaxItems() > 0)
+ SearchService searchService = indexAndSearcher.getSearcher(storeRef, options.isIncludeInTransactionData());
+ if (searchService instanceof LuceneSearcher)
{
- sp.setLimit(options.getMaxItems() + options.getSkipCount());
+ LuceneSearcher luceneSearcher = (LuceneSearcher) searchService;
+ ClosingIndexSearcher searcher = luceneSearcher.getClosingIndexSearcher();
+ LuceneQueryBuilder builder = (LuceneQueryBuilder) query;
+ org.apache.lucene.search.Query luceneQuery = builder.buildQuery(selectorName, luceneContext, functionContext);
+ System.out.println(luceneQuery);
+
+ Hits hits = searcher.search(luceneQuery);
+ return new LuceneResultSet(hits, searcher, nodeService, tenantService, null, searchParameters, indexAndSearcher);
+
}
else
{
- sp.setLimitBy(LimitBy.UNLIMITED);
+ throw new UnsupportedOperationException();
}
- Hits hits = searcher.search(luceneQuery);
- return new LuceneResultSet(hits, searcher, nodeService, tenantService, null, sp, indexAndSearcher);
-
}
else
{
throw new UnsupportedOperationException();
}
}
- else
+ catch (ParseException e)
{
- throw new UnsupportedOperationException();
+ throw new SearcherException("Failed to parse query: " + e);
+ }
+ catch (IOException e)
+ {
+ throw new SearcherException("IO exception during search", e);
}
}
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneSelector.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneSelector.java
index f3b2fc1756..e2eaa98711 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneSelector.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneSelector.java
@@ -24,15 +24,15 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene;
-import java.util.Collection;
+import java.util.Map;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.BaseSelector;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.namespace.QName;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.Query;
/**
* @author andyh
@@ -53,20 +53,11 @@ public class LuceneSelector extends BaseSelector implements LuceneQueryBuilderCo
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery, org.apache.lucene.search.BooleanQuery)
*/
- public BooleanQuery addComponent(BooleanQuery base, BooleanQuery current, DictionaryService dictionaryService)
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext) throws ParseException
{
- Collection subclasses = dictionaryService.getSubTypes(getType(), true);
- BooleanQuery booleanQuery = new BooleanQuery();
- for (QName qname : subclasses)
- {
- TermQuery termQuery = new TermQuery(new Term("TYPE", qname.toString()));
- if (termQuery != null)
- {
- booleanQuery.add(termQuery, Occur.SHOULD);
- }
- }
- base.add(booleanQuery, Occur.MUST);
- return current;
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ return lqp.getFieldQuery("TYPE", getType().toString());
+
}
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
index 56401ee28b..021ad6453a 100644
--- 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
@@ -24,13 +24,27 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.io.Serializable;
+import java.util.Map;
+
+import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneChild extends Child
+public class LuceneChild extends Child implements LuceneQueryBuilderComponent
{
/**
@@ -40,5 +54,51 @@ public class LuceneChild extends Child
{
super();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument argument = functionArgs.get(ARG_PARENT);
+ String id = (String) argument.getValue(functionContext);
+ NodeRef nodeRef;
+ if(NodeRef.isNodeRef(id))
+ {
+ nodeRef = new NodeRef(id);
+ }
+ else
+ {
+ int lastIndex = id.lastIndexOf('/');
+ String versionLabel = id.substring(lastIndex+1);
+ String actualId = id.substring(0, lastIndex);
+ if(NodeRef.isNodeRef(actualId))
+ {
+ nodeRef = new NodeRef(actualId);
+ Serializable value = functionContext.getNodeService().getProperty(nodeRef, ContentModel.PROP_VERSION_LABEL);
+ if (value != null)
+ {
+ String actualVersionLabel = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ if(!actualVersionLabel.equals(versionLabel))
+ {
+ throw new QueryModelException("Object id does not refer to the current version"+id);
+ }
+ }
+ }
+ else
+ {
+ throw new QueryModelException("Invalid Object Id "+id);
+ }
+ }
+ Query query = lqp.getFieldQuery("PARENT", nodeRef.toString());
+ return query;
+
+ }
}
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
index ba191154cd..d1c8d6491c 100644
--- 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
@@ -24,13 +24,28 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.io.Serializable;
+import java.util.Map;
+
+import org.alfresco.model.ContentModel;
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.Path;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneDescendant extends Descendant
+public class LuceneDescendant extends Descendant implements LuceneQueryBuilderComponent
{
/**
@@ -41,4 +56,53 @@ public class LuceneDescendant extends Descendant
super();
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument argument = functionArgs.get(ARG_ANCESTOR);
+ String id = (String) argument.getValue(functionContext);
+ NodeRef nodeRef;
+ if(NodeRef.isNodeRef(id))
+ {
+ nodeRef = new NodeRef(id);
+ }
+ else
+ {
+ int lastIndex = id.lastIndexOf('/');
+ String versionLabel = id.substring(lastIndex+1);
+ String actualId = id.substring(0, lastIndex);
+ if(NodeRef.isNodeRef(actualId))
+ {
+ nodeRef = new NodeRef(actualId);
+ Serializable value = functionContext.getNodeService().getProperty(nodeRef, ContentModel.PROP_VERSION_LABEL);
+ if (value != null)
+ {
+ String actualVersionLabel = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ if(!actualVersionLabel.equals(versionLabel))
+ {
+ throw new QueryModelException("Object id does not refer to the current version"+id);
+ }
+ }
+ }
+ else
+ {
+ throw new QueryModelException("Invalid Object Id "+id);
+ }
+ }
+ Path path = functionContext.getNodeService().getPath(nodeRef);
+ StringBuilder builder = new StringBuilder(path.toPrefixString(luceneContext.getNamespacePrefixResolver()));
+ builder.append("//*");
+ Query query = lqp.getFieldQuery("PATH", builder.toString());
+ return query;
+
+ }
+
}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneEquals.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneEquals.java
index 7e1b73f2e3..d1e3c7ceb7 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneEquals.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneEquals.java
@@ -24,16 +24,89 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
+import org.alfresco.repo.search.impl.querymodel.StaticArgument;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Equals;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneEquals extends Equals
+public class LuceneEquals extends Equals implements LuceneQueryBuilderComponent
{
public LuceneEquals()
{
super();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument lhs = functionArgs.get(ARG_LHS);
+ Argument rhs = functionArgs.get(ARG_RHS);
+
+ PropertyArgument propertyArgument;
+ StaticArgument staticArgument;
+
+ if(lhs instanceof PropertyArgument)
+ {
+ if(rhs instanceof PropertyArgument)
+ {
+ throw new QueryModelException("Implicit join is not supported");
+ }
+ else if(rhs instanceof StaticArgument)
+ {
+ propertyArgument = (PropertyArgument)lhs;
+ staticArgument = (StaticArgument) rhs;
+ }
+ else
+ {
+ throw new QueryModelException("Argument of type "+rhs.getClass().getName()+" is not supported");
+ }
+ }
+ else if(rhs instanceof PropertyArgument)
+ {
+ if(lhs instanceof StaticArgument)
+ {
+ propertyArgument = (PropertyArgument)rhs;
+ staticArgument = (StaticArgument) lhs;
+ }
+ else
+ {
+ throw new QueryModelException("Argument of type "+lhs.getClass().getName()+" is not supported");
+ }
+ }
+ else
+ {
+ throw new QueryModelException("Equals must have one property argument");
+ }
+
+ Query query = functionContext.buildLuceneEquality(lqp, propertyArgument.getPropertyName(), staticArgument.getValue(functionContext));
+
+ if(query == null)
+ {
+ throw new QueryModelException("No query time mapping for property "+propertyArgument.getPropertyName()+", it should not be allowed in predicates");
+ }
+
+ return query;
+ }
+
}
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
index 74502a7f25..5610bea4bb 100644
--- 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
@@ -24,13 +24,24 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
+import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
+import org.alfresco.repo.search.impl.querymodel.QueryModelException;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
+import org.apache.lucene.search.Query;
/**
* @author andyh
- *
*/
-public class LuceneExists extends Exists
+public class LuceneExists extends Exists implements LuceneQueryBuilderComponent
{
/**
@@ -41,4 +52,21 @@ public class LuceneExists extends Exists
super();
}
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
+ Argument inverseArgument = functionArgs.get(ARG_NOT);
+ Boolean not = DefaultTypeConverter.INSTANCE.convert(Boolean.class, inverseArgument.getValue(functionContext));
+
+ Query query = functionContext.buildLuceneExists(lqp, propertyArgument.getPropertyName(), not);
+
+ if (query == null)
+ {
+ throw new QueryModelException("No query time mapping for property " + propertyArgument.getPropertyName() + ", it should not be allowed in predicates");
+ }
+
+ return query;
+ }
}
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
index 5ee213debe..02762b388a 100644
--- 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
@@ -24,13 +24,21 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
- *
*/
-public class LuceneFTSExactTerm extends FTSExactTerm
+public class LuceneFTSExactTerm extends FTSExactTerm implements LuceneQueryBuilderComponent
{
/**
@@ -40,4 +48,23 @@ public class LuceneFTSExactTerm extends FTSExactTerm
{
super();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument argument = functionArgs.get(ARG_TERM);
+ String term = (String) argument.getValue(functionContext);
+
+ Query query = lqp.getFieldQuery("TEXT", term);
+ return query;
+
+ }
}
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
index ce125aa377..06cba4bfa5 100644
--- 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
@@ -24,13 +24,22 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
*
*/
-public class LuceneFTSPhrase extends FTSPhrase
+public class LuceneFTSPhrase extends FTSPhrase implements LuceneQueryBuilderComponent
{
/**
*
@@ -39,4 +48,23 @@ public class LuceneFTSPhrase extends FTSPhrase
{
super();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument argument = functionArgs.get(ARG_PHRASE);
+ String term = (String) argument.getValue(functionContext);
+
+ Query query = lqp.getFieldQuery("TEXT", term);
+ return query;
+
+ }
}
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
index 67a25a72e2..d7f17d57c2 100644
--- 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
@@ -24,13 +24,21 @@
*/
package org.alfresco.repo.search.impl.querymodel.impl.lucene.functions;
+import java.util.Map;
+
+import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
+import org.alfresco.repo.search.impl.lucene.ParseException;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext;
+import org.apache.lucene.search.Query;
/**
* @author andyh
- *
*/
-public class LuceneFTSTerm extends FTSTerm
+public class LuceneFTSTerm extends FTSTerm implements LuceneQueryBuilderComponent
{
/**
*
@@ -39,4 +47,24 @@ public class LuceneFTSTerm extends FTSTerm
{
super();
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent#addComponent(org.apache.lucene.search.BooleanQuery,
+ * org.apache.lucene.search.BooleanQuery, org.alfresco.service.cmr.dictionary.DictionaryService,
+ * java.lang.String)
+ */
+ public Query addComponent(String selector, Map functionArgs, LuceneQueryBuilderContext luceneContext, FunctionEvaluationContext functionContext)
+ throws ParseException
+ {
+ LuceneQueryParser lqp = luceneContext.getLuceneQueryParser();
+ Argument argument = functionArgs.get(ARG_TERM);
+ String term = (String) argument.getValue(functionContext);
+
+ Query query = lqp.getFieldQuery("TEXT", term);
+ return query;
+
+ }
+
}