diff --git a/config/alfresco/cmis-api-context.xml b/config/alfresco/cmis-api-context.xml
index 0bf97d9155..96feff9f01 100644
--- a/config/alfresco/cmis-api-context.xml
+++ b/config/alfresco/cmis-api-context.xml
@@ -2,17 +2,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
true
-
-
-
@@ -27,6 +36,32 @@
+
+
+
+
+
+
+ 0.43
+ workspace/SpacesStore/Company Home
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/alfresco/model/cmisModel.xml b/config/alfresco/model/cmisModel.xml
index dda60d8698..1582c0d63c 100644
--- a/config/alfresco/model/cmisModel.xml
+++ b/config/alfresco/model/cmisModel.xml
@@ -12,6 +12,19 @@
+
+
+
+
+
+ NOT_ALLOWED
+ ALLOWED
+ REQUIRED
+
+
+
+
+
@@ -55,6 +68,28 @@
false
+
+ Version Label
+ The version label
+ d:text
+ true
+ true
+ false
+
+ true
+
+
+
+ Version series id
+ The version series id
+ d:noderef
+ true
+ true
+ false
+
+ false
+
+
Version Series Is Checked Out
Is the version series checked out?
@@ -96,11 +131,14 @@
Content Stream Allowed
Is a content stream allowed?
- d:boolean
+ d:text
true
true
false
+
+
+
Content Stream Length
@@ -124,7 +162,7 @@
false
-
+
Content Stream Filename
The content stream filename
d:text
@@ -273,7 +311,7 @@
false
-
+
Last Modified By
The authority who last modified this object
d:text
diff --git a/source/java/org/alfresco/cmis/CMISService.java b/source/java/org/alfresco/cmis/CMISService.java
new file mode 100644
index 0000000000..e246bf004b
--- /dev/null
+++ b/source/java/org/alfresco/cmis/CMISService.java
@@ -0,0 +1,463 @@
+/*
+ * Copyright (C) 2005-2008 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.cmis;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.model.ContentModel;
+import org.alfresco.repo.model.Repository;
+import org.alfresco.repo.search.QueryParameterDefImpl;
+import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
+import org.alfresco.repo.tenant.TenantDeployer;
+import org.alfresco.repo.tenant.TenantDeployerService;
+import org.alfresco.repo.transaction.RetryingTransactionHelper;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+import org.alfresco.service.cmr.dictionary.DictionaryService;
+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.QueryParameterDefinition;
+import org.alfresco.service.cmr.search.ResultSet;
+import org.alfresco.service.cmr.search.SearchParameters;
+import org.alfresco.service.cmr.search.SearchService;
+import org.alfresco.service.namespace.NamespaceService;
+import org.alfresco.service.namespace.QName;
+import org.alfresco.util.AbstractLifecycleBean;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.ApplicationListener;
+
+
+/**
+ * CMIS Service
+ *
+ * @author davidc
+ */
+public class CMISService implements ApplicationContextAware, ApplicationListener, TenantDeployer
+{
+ /**
+ * Types Filter
+ *
+ * @author davidc
+ */
+ public enum TypesFilter
+ {
+ Folders,
+ FoldersAndDocuments,
+ Documents
+ };
+
+ /** Query Parameters */
+ private static final QName PARAM_PARENT = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "parent");
+ private static final QName PARAM_USERNAME = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "username");
+
+ /** Shallow search for all files and folders */
+ private static final String LUCENE_QUERY_SHALLOW_FOLDERS =
+ "+PARENT:\"${cm:parent}\" " +
+ "-TYPE:\"" + ContentModel.TYPE_SYSTEM_FOLDER + "\" " +
+ "+TYPE:\"" + ContentModel.TYPE_FOLDER + "\"";
+
+ /** Shallow search for all files and folders */
+ private static final String LUCENE_QUERY_SHALLOW_FILES =
+ "+PARENT:\"${cm:parent}\" " +
+ "-TYPE:\"" + ContentModel.TYPE_SYSTEM_FOLDER + "\" " +
+ "+TYPE:\"" + ContentModel.TYPE_CONTENT + "\" " +
+ "-ASPECT:\"" + ContentModel.ASPECT_WORKING_COPY + "\"";
+
+ private static final String LUCENE_QUERY_CHECKEDOUT =
+ "+@cm\\:workingCopyOwner:${cm:username}";
+
+ private static final String LUCENE_QUERY_CHECKEDOUT_IN_FOLDER =
+ "+@cm\\:workingCopyOwner:${cm:username} " +
+ "+PARENT:\"${cm:parent}\"";
+
+
+ // dependencies
+ private Repository repository;
+ private RetryingTransactionHelper retryingTransactionHelper;
+ private DictionaryService dictionaryService;
+ private SearchService searchService;
+ private NodeService nodeService;
+ private TenantDeployerService tenantDeployerService;
+ private ProcessorLifecycle lifecycle = new ProcessorLifecycle();
+
+ // CMIS supported version
+ private String cmisVersion = "[undefined]";
+
+ // default CMIS store and path
+ private String defaultRootPath;
+ private Map defaultRootNodeRefs;
+
+ // data types for query
+ private DataTypeDefinition nodeRefDataType;
+ private DataTypeDefinition textDataType;
+
+
+ /**
+ * Sets the supported version of the CMIS specification
+ *
+ * @param cmisVersion
+ */
+ public void setCMISSpecVersion(String cmisVersion)
+ {
+ this.cmisVersion = cmisVersion;
+ }
+
+ /**
+ * Sets the default root path
+ *
+ * store_type/store_id/path...
+ *
+ * @param path store_type/store_id/path...
+ */
+ public void setDefaultRootPath(String path)
+ {
+ defaultRootPath = path;
+ }
+
+ /**
+ * Sets the tenant deployer service
+ *
+ * @param tenantDeployerService
+ */
+ public void setTenantDeployerService(TenantDeployerService tenantDeployerService)
+ {
+ this.tenantDeployerService = tenantDeployerService;
+ }
+
+ /**
+ * Sets helper that provides transaction callbacks
+ */
+ public void setTransactionHelper(RetryingTransactionHelper retryingTransactionHelper)
+ {
+ this.retryingTransactionHelper = retryingTransactionHelper;
+ }
+
+ /**
+ * @param dictionaryService
+ */
+ public void setDictionaryService(DictionaryService dictionaryService)
+ {
+ this.dictionaryService = dictionaryService;
+ }
+
+ /**
+ * @param searchService
+ */
+ public void setSearchService(SearchService searchService)
+ {
+ this.searchService = searchService;
+ }
+
+ /**
+ * @param nodeService
+ */
+ public void setNodeService(NodeService nodeService)
+ {
+ this.nodeService = nodeService;
+ }
+
+ /**
+ * @param repository
+ */
+ public void setRepository(Repository repository)
+ {
+ this.repository = repository;
+ }
+
+ /* (non-Javadoc)
+ * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
+ */
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
+ {
+ lifecycle.setApplicationContext(applicationContext);
+ }
+
+ /* (non-Javadoc)
+ * @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
+ */
+ public void onApplicationEvent(ApplicationEvent event)
+ {
+ lifecycle.onApplicationEvent(event);
+ }
+
+ /**
+ * Hooks into Spring Application Lifecycle
+ */
+ private class ProcessorLifecycle extends AbstractLifecycleBean
+ {
+ @Override
+ protected void onBootstrap(ApplicationEvent event)
+ {
+ init();
+ }
+
+ @Override
+ protected void onShutdown(ApplicationEvent event)
+ {
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.tenant.TenantDeployer#onEnableTenant()
+ */
+ public void onEnableTenant()
+ {
+ init();
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.tenant.TenantDeployer#onDisableTenant()
+ */
+ public void onDisableTenant()
+ {
+ destroy();
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.tenant.TenantDeployer#init()
+ */
+ public void init()
+ {
+ // initialise data types
+ nodeRefDataType = dictionaryService.getDataType(DataTypeDefinition.NODE_REF);
+ textDataType = dictionaryService.getDataType(DataTypeDefinition.TEXT);
+
+ // initialise root node ref
+ tenantDeployerService.register(this);
+ if (defaultRootNodeRefs == null)
+ {
+ defaultRootNodeRefs = new HashMap(1);
+ }
+ getDefaultRootNodeRef();
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.tenant.TenantDeployer#destroy()
+ */
+ public void destroy()
+ {
+ defaultRootNodeRefs.remove(tenantDeployerService.getCurrentUserDomain());
+ }
+
+ /**
+ * Gets the supported CMIS Version
+ *
+ * @return version of CMIS specification supported
+ */
+ public String getCMISVersion()
+ {
+ return cmisVersion;
+ }
+
+ /**
+ * Gets the default root node path
+ *
+ * @return root node path
+ */
+ public String getDefaultRootPath()
+ {
+ return defaultRootPath;
+ }
+
+ /**
+ * Gets the default root node ref
+ *
+ * @return root node ref
+ */
+ public NodeRef getDefaultRootNodeRef()
+ {
+ String tenantDomain = tenantDeployerService.getCurrentUserDomain();
+ NodeRef defaultNodeRef = defaultRootNodeRefs.get(tenantDomain);
+ if (defaultNodeRef == null)
+ {
+ defaultNodeRef = AuthenticationUtil.runAs(new RunAsWork()
+ {
+ public NodeRef doWork() throws Exception
+ {
+ return retryingTransactionHelper.doInTransaction(new RetryingTransactionCallback()
+ {
+ public NodeRef execute() throws Exception
+ {
+ return repository.findNodeRef("path", defaultRootPath.split("/"));
+ };
+ });
+ }
+ }, AuthenticationUtil.getSystemUserName());
+
+ if (defaultNodeRef == null)
+ {
+ throw new AlfrescoRuntimeException("Default root folder path '" + defaultRootPath + "' not found");
+ }
+ defaultRootNodeRefs.put(tenantDomain, defaultNodeRef);
+ }
+ return defaultNodeRef;
+ }
+
+ /**
+ * Gets the default store ref
+ *
+ * @return store ref
+ */
+ public StoreRef getDefaultRootStoreRef()
+ {
+ return getDefaultRootNodeRef().getStoreRef();
+ }
+
+ /**
+ * Query for node children
+ *
+ * @param parent node to query children for
+ * @param typesFilter types filter
+ * @return children of node
+ */
+ public NodeRef[] getChildren(NodeRef parent, TypesFilter typesFilter)
+ {
+ if (typesFilter == TypesFilter.FoldersAndDocuments)
+ {
+ NodeRef[] folders = queryChildren(parent, TypesFilter.Folders);
+ NodeRef[] docs = queryChildren(parent, TypesFilter.Documents);
+ NodeRef[] foldersAndDocs = new NodeRef[folders.length + docs.length];
+ System.arraycopy(folders, 0, foldersAndDocs, 0, folders.length);
+ System.arraycopy(docs, 0, foldersAndDocs, folders.length, docs.length);
+ return foldersAndDocs;
+ }
+ else if (typesFilter == TypesFilter.Folders)
+ {
+ NodeRef[] folders = queryChildren(parent, TypesFilter.Folders);
+ return folders;
+ }
+ else if (typesFilter == TypesFilter.Documents)
+ {
+ NodeRef[] docs = queryChildren(parent, TypesFilter.Documents);
+ return docs;
+ }
+
+ return new NodeRef[0];
+ }
+
+ /**
+ * Query for checked out items
+ *
+ * @param username for user
+ * @param folder (optional) within folder
+ * @param includeDescendants true => include descendants of folder, false => only children of folder
+ * @return checked out items
+ */
+ public NodeRef[] getCheckedOut(String username, NodeRef folder, boolean includeDescendants)
+ {
+ SearchParameters params = new SearchParameters();
+ params.setLanguage(SearchService.LANGUAGE_LUCENE);
+ QueryParameterDefinition usernameDef = new QueryParameterDefImpl(PARAM_USERNAME, textDataType, true, username);
+ params.addQueryParameterDefinition(usernameDef);
+
+ if (folder == null)
+ {
+ // get all checked-out items
+ params.setQuery(LUCENE_QUERY_CHECKEDOUT);
+ params.addStore(getDefaultRootStoreRef());
+ }
+ else
+ {
+ // get all checked-out items within folder
+ // NOTE: special-case for all descendants in root folder (treat as all checked-out items)
+ if (includeDescendants && nodeService.getRootNode(folder.getStoreRef()) == folder)
+ {
+ // get all checked-out items within specified folder store
+ params.setQuery(LUCENE_QUERY_CHECKEDOUT);
+ params.addStore(folder.getStoreRef());
+ }
+ else
+ {
+ // TODO: implement descendants of folder
+ params.setQuery(LUCENE_QUERY_CHECKEDOUT_IN_FOLDER);
+ params.addStore(folder.getStoreRef());
+ QueryParameterDefinition parentDef = new QueryParameterDefImpl(PARAM_PARENT, nodeRefDataType, true, folder.toString());
+ params.addQueryParameterDefinition(parentDef);
+ }
+ }
+
+ ResultSet resultSet = null;
+ try
+ {
+ resultSet = searchService.query(params);
+ List results = resultSet.getNodeRefs();
+ NodeRef[] nodeRefs = new NodeRef[results.size()];
+ return results.toArray(nodeRefs);
+ }
+ finally
+ {
+ if (resultSet != null) resultSet.close();
+ }
+ }
+
+ /**
+ * Query children helper
+ *
+ * NOTE: Queries for folders only or documents only
+ *
+ * @param parent node to query children for
+ * @param typesFilter folders or documents
+ * @return node children
+ */
+ private NodeRef[] queryChildren(NodeRef parent, TypesFilter typesFilter)
+ {
+ SearchParameters params = new SearchParameters();
+ params.setLanguage(SearchService.LANGUAGE_LUCENE);
+ params.addStore(parent.getStoreRef());
+ QueryParameterDefinition parentDef = new QueryParameterDefImpl(PARAM_PARENT, nodeRefDataType, true, parent.toString());
+ params.addQueryParameterDefinition(parentDef);
+
+ if (typesFilter == TypesFilter.Folders)
+ {
+ params.setQuery(LUCENE_QUERY_SHALLOW_FOLDERS);
+ }
+ else if (typesFilter == TypesFilter.Documents)
+ {
+ params.setQuery(LUCENE_QUERY_SHALLOW_FILES);
+ }
+
+ ResultSet resultSet = null;
+ try
+ {
+ resultSet = searchService.query(params);
+ List results = resultSet.getNodeRefs();
+ NodeRef[] nodeRefs = new NodeRef[results.size()];
+ return results.toArray(nodeRefs);
+ }
+ finally
+ {
+ if (resultSet != null) resultSet.close();
+ }
+ }
+
+}
diff --git a/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java b/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
index 269e0e1d2e..7f19fd8c3d 100644
--- a/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
+++ b/source/java/org/alfresco/cmis/dictionary/BaseCMISTest.java
@@ -32,6 +32,7 @@ import javax.transaction.UserTransaction;
import junit.framework.TestCase;
import org.alfresco.cmis.property.CMISPropertyService;
+import org.alfresco.cmis.search.CMISQueryService;
import org.alfresco.repo.security.authentication.AuthenticationComponent;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.ServiceRegistry;
@@ -56,6 +57,8 @@ public abstract class BaseCMISTest extends TestCase
{
private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
+ protected CMISMapping cmisMapping;
+
protected CMISDictionaryService cmisDictionaryService;
protected DictionaryService dictionaryService;
@@ -77,19 +80,22 @@ public abstract class BaseCMISTest extends TestCase
protected ServiceRegistry serviceRegistry;
protected NamespaceService namespaceService;
+
+ protected CMISQueryService cmisQueryService;
public void setUp() throws Exception
{
serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
+ cmisMapping = (CMISMapping) ctx.getBean("CMISMapping");
cmisDictionaryService = (CMISDictionaryService) ctx.getBean("CMISDictionaryService");
cmisPropertyService = (CMISPropertyService) ctx.getBean("CMISPropertyService");
+ cmisQueryService = (CMISQueryService) ctx.getBean("CMISQueryService");
dictionaryService = (DictionaryService) ctx.getBean("dictionaryService");
nodeService = (NodeService) ctx.getBean("nodeService");
fileFolderService = (FileFolderService) ctx.getBean("fileFolderService");
namespaceService = (NamespaceService) ctx.getBean("namespaceService");
-
transactionService = (TransactionService) ctx.getBean("transactionComponent");
authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
@@ -100,14 +106,11 @@ public abstract class BaseCMISTest extends TestCase
String storeName = "CMISTest-" + getName() + "-" + (new Date().getTime());
StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, storeName);
rootNodeRef = nodeService.getRootNode(storeRef);
-
-
}
@Override
protected void tearDown() throws Exception
{
-
if (testTX.getStatus() == Status.STATUS_ACTIVE)
{
testTX.rollback();
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISDictionaryService.java b/source/java/org/alfresco/cmis/dictionary/CMISDictionaryService.java
index 91736c7a31..ddc2f8adab 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISDictionaryService.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISDictionaryService.java
@@ -33,7 +33,6 @@ import org.alfresco.service.cmr.dictionary.AspectDefinition;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.TypeDefinition;
-import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
/**
@@ -43,11 +42,10 @@ import org.alfresco.service.namespace.QName;
*/
public class CMISDictionaryService
{
-
+ private CMISMapping cmisMapping;
+
private DictionaryService dictionaryService;
-
- private NamespaceService namespaceService;
-
+
private boolean strict = true;
/**
@@ -61,14 +59,15 @@ public class CMISDictionaryService
}
/**
- * Set the namespace service
+ * Set the mapping service
*
- * @param namespaceService
+ * @param cmisMapping
*/
- public void setNamespaceService(NamespaceService namespaceService)
+ public void setCMISMapping(CMISMapping cmisMapping)
{
- this.namespaceService = namespaceService;
+ this.cmisMapping = cmisMapping;
}
+
/**
* Is the service strict (CMIS types only)
@@ -116,25 +115,25 @@ public class CMISDictionaryService
for (QName typeQName : alfrescoTypeQNames)
{
- if (CMISMapping.isValidCmisDocument(dictionaryService, typeQName))
+ if (cmisMapping.isValidCmisDocument(typeQName))
{
- answer.add(CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, typeQName));
+ answer.add(cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, typeQName));
}
- else if (CMISMapping.isValidCmisFolder(dictionaryService, typeQName))
+ else if (cmisMapping.isValidCmisFolder(typeQName))
{
- answer.add(CMISMapping.getCmisTypeId(CMISScope.FOLDER, typeQName));
+ answer.add(cmisMapping.getCmisTypeId(CMISScope.FOLDER, typeQName));
}
else if (typeQName.equals(CMISMapping.RELATIONSHIP_QNAME))
{
- answer.add(CMISMapping.getCmisTypeId(CMISScope.RELATIONSHIP, typeQName));
+ answer.add(cmisMapping.getCmisTypeId(CMISScope.RELATIONSHIP, typeQName));
}
}
for (QName associationName : alfrescoAssociationQNames)
{
- if (CMISMapping.isValidCmisRelationship(dictionaryService, associationName))
+ if (cmisMapping.isValidCmisRelationship(associationName))
{
- answer.add(CMISMapping.getCmisTypeId(CMISScope.RELATIONSHIP, associationName));
+ answer.add(cmisMapping.getCmisTypeId(CMISScope.RELATIONSHIP, associationName));
}
}
@@ -154,30 +153,23 @@ public class CMISDictionaryService
{
case RELATIONSHIP:
// Associations
- AssociationDefinition associationDefinition = dictionaryService.getAssociation(typeId.getQName());
- if (associationDefinition != null)
+ if (cmisMapping.isValidCmisRelationship(typeId.getQName()))
{
- if (CMISMapping.isValidCmisRelationship(dictionaryService, typeId.getQName()))
- {
- return new CMISTypeDefinition(dictionaryService, namespaceService, typeId);
- }
- else
- {
- return null;
- }
+ return new CMISTypeDefinition(cmisMapping, typeId);
}
else
{
return null;
}
+
case DOCUMENT:
case FOLDER:
TypeDefinition typeDefinition = dictionaryService.getType(typeId.getQName());
if (typeDefinition != null)
{
- if (CMISMapping.isValidCmisType(dictionaryService, typeId.getQName()))
+ if (cmisMapping.isValidCmisType(typeId.getQName()))
{
- return new CMISTypeDefinition(dictionaryService, namespaceService, typeId);
+ return new CMISTypeDefinition(cmisMapping, typeId);
}
else
{
@@ -210,7 +202,7 @@ public class CMISDictionaryService
AssociationDefinition associationDefinition = dictionaryService.getAssociation(typeId.getQName());
if (associationDefinition != null)
{
- if (CMISMapping.isValidCmisRelationship(dictionaryService, typeId.getQName()))
+ if (cmisMapping.isValidCmisRelationship(typeId.getQName()))
{
return getPropertyDefinitions(CMISMapping.RELATIONSHIP_TYPE_ID);
}
@@ -227,13 +219,13 @@ public class CMISDictionaryService
TypeDefinition typeDefinition = dictionaryService.getType(typeId.getQName());
if (typeDefinition != null)
{
- if (CMISMapping.isValidCmisDocumentOrFolder(dictionaryService, typeId.getQName()) || typeId.getQName().equals(CMISMapping.RELATIONSHIP_QNAME))
+ if (cmisMapping.isValidCmisDocumentOrFolder(typeId.getQName()) || typeId.getQName().equals(CMISMapping.RELATIONSHIP_QNAME))
{
for (QName qname : typeDefinition.getProperties().keySet())
{
- if (CMISMapping.getPropertyType(dictionaryService, qname) != null)
+ if (cmisMapping.getPropertyType(qname) != null)
{
- CMISPropertyDefinition cmisPropDefinition = new CMISPropertyDefinition(dictionaryService, namespaceService, qname);
+ CMISPropertyDefinition cmisPropDefinition = new CMISPropertyDefinition(cmisMapping, qname, typeDefinition.getName());
properties.put(cmisPropDefinition.getPropertyName(), cmisPropDefinition);
}
}
@@ -241,19 +233,19 @@ public class CMISDictionaryService
{
for (QName qname : aspect.getProperties().keySet())
{
- if (CMISMapping.getPropertyType(dictionaryService, qname) != null)
+ if (cmisMapping.getPropertyType(qname) != null)
{
- CMISPropertyDefinition cmisPropDefinition = new CMISPropertyDefinition(dictionaryService, namespaceService, qname);
+ CMISPropertyDefinition cmisPropDefinition = new CMISPropertyDefinition(cmisMapping, qname, typeDefinition.getName());
properties.put(cmisPropDefinition.getPropertyName(), cmisPropDefinition);
}
}
}
}
- if (CMISMapping.isValidCmisDocumentOrFolder(dictionaryService, typeId.getQName()))
+ if (cmisMapping.isValidCmisDocumentOrFolder(typeId.getQName()))
{
// Add CMIS properties if required
- if (!CMISMapping.isCmisCoreType(typeId.getQName()))
+ if (!cmisMapping.isCmisCoreType(typeId.getQName()))
{
properties.putAll(getPropertyDefinitions(typeId.getRootTypeId()));
}
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISDictionaryTest.java b/source/java/org/alfresco/cmis/dictionary/CMISDictionaryTest.java
index 9fd3f244c4..c303736cc3 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISDictionaryTest.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISDictionaryTest.java
@@ -34,9 +34,8 @@ public class CMISDictionaryTest extends BaseCMISTest
System.out.println(name);
}
assertEquals(3, cmisDictionaryService.getAllObjectTypeIds().size());
-
}
-
+
public void testBasicTypeDefinitions()
{
cmisDictionaryService.setStrict(false);
@@ -44,7 +43,21 @@ public class CMISDictionaryTest extends BaseCMISTest
{
System.out.println(cmisDictionaryService.getType(name));
}
+ }
+ public void testTypeIds()
+ {
+ cmisDictionaryService.setStrict(false);
+ for (CMISTypeId name : cmisDictionaryService.getAllObjectTypeIds())
+ {
+ String typeId = name.getTypeId();
+ CMISTypeId lookup = cmisMapping.getCmisTypeId(typeId);
+ assertEquals(name, lookup);
+ System.out.println(name + " => " + lookup);
+ CMISTypeDefinition type = cmisDictionaryService.getType(lookup);
+ assertNotNull(type);
+ assertEquals(lookup, type.getObjectTypeId());
+ }
}
public void testBasicProperties()
@@ -57,7 +70,6 @@ public class CMISDictionaryTest extends BaseCMISTest
System.out.println(name +" -> "+ propertyName);
}
}
-
}
public void testBasicPropertyDefinitions()
@@ -71,7 +83,6 @@ public class CMISDictionaryTest extends BaseCMISTest
}
}
-
cmisDictionaryService.setStrict(false);
for (CMISTypeId name : cmisDictionaryService.getAllObjectTypeIds())
{
@@ -80,6 +91,5 @@ public class CMISDictionaryTest extends BaseCMISTest
System.out.println(proDef);
}
}
-
}
}
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISMapping.java b/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
index 80a8339fcd..0bc6c5abb1 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISMapping.java
@@ -27,6 +27,7 @@ package org.alfresco.cmis.dictionary;
import java.util.Collection;
import java.util.HashMap;
+import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
@@ -121,6 +122,10 @@ public class CMISMapping
public static String PROP_IS_MAJOR_VERSION = "IS_MAJOR_VERSION";
public static String PROP_IS_LATEST_MAJOR_VERSION = "IS_LATEST_MAJOR_VERSION";
+
+ public static String PROP_VERSION_LABEL = "VERSION_LABEL";
+
+ public static String PROP_VERSION_SERIES_ID = "VERSION_SERIES_ID";
public static String PROP_VERSION_SERIES_IS_CHECKED_OUT = "VERSION_SERIES_IS_CHECKED_OUT";
@@ -195,45 +200,118 @@ public class CMISMapping
alfrescoPropertyTypesToCimsPropertyTypes.put(DataTypeDefinition.TEXT, CMISPropertyType.STRING);
}
+
+ private DictionaryService dictionaryService;
+ private NamespaceService namespaceService;
+
+
+ /**
+ * Set the dictionary Service
+ *
+ * @param dictionaryService
+ */
+ public void setDictionaryService(DictionaryService dictionaryService)
+ {
+ this.dictionaryService = dictionaryService;
+ }
+
+ /**
+ * Gets the dictionary service
+ *
+ * @return dictionaryService
+ */
+ /*package*/ DictionaryService getDictionaryService()
+ {
+ return this.dictionaryService;
+ }
+
+ /**
+ * Set the namespace service
+ *
+ * @param namespaceService
+ */
+ public void setNamespaceService(NamespaceService namespaceService)
+ {
+ this.namespaceService = namespaceService;
+ }
+
+ /**
+ * Gets the namespace service
+ *
+ * @return namespaceService
+ */
+ /*package*/ NamespaceService getNamespaceService()
+ {
+ return this.namespaceService;
+ }
+
/**
* Id this a CMIS core type defined in the Alfresco CMIS model
*
* @param typeQName
* @return
*/
- public static boolean isCmisCoreType(QName typeQName)
+ public boolean isCmisCoreType(QName typeQName)
{
return qNameToCmisTypeId.get(typeQName) != null;
}
/**
- * Get the CMIS Type Id given the Alfresco QName for the type in any Alfresco model
+ * Gets the CMIS Type Id given the serialized type Id
+ *
+ * @param typeId type id in the form of /_
+ * @return
+ */
+ public CMISTypeId getCmisTypeId(String typeId)
+ {
+ // Is it a CMIS root object type id?
+ if (typeId.equals(DOCUMENT_TYPE_ID.getTypeId()))
+ {
+ return DOCUMENT_TYPE_ID;
+ }
+ else if (typeId.equals(FOLDER_TYPE_ID.getTypeId()))
+ {
+ return FOLDER_TYPE_ID;
+ }
+ else if (typeId.equals(RELATIONSHIP_TYPE_ID.getTypeId()))
+ {
+ return RELATIONSHIP_TYPE_ID;
+ }
+ // TODO: Policy root object type
+
+ // Is it an Alfresco type id?
+ if (typeId.length() < 4 || typeId.charAt(1) != '/')
+ {
+ throw new AlfrescoRuntimeException("Malformed type id '" + typeId + "'");
+ }
+
+ // Alfresco type id
+ CMISScope scope = CMISScope.toScope(typeId.charAt(0));
+ if (scope == null)
+ {
+ throw new AlfrescoRuntimeException("Malformed type id '" + typeId + "'; discriminator " + typeId.charAt(0) + " unknown");
+ }
+ QName typeQName = QName.resolveToQName(namespaceService, typeId.substring(2).replace('_', ':'));
+
+ // Construct CMIS Type Id
+ return new CMISTypeId(scope, typeQName, typeId);
+ }
+
+ /**
+ * Gets the CMIS Type Id given the Alfresco QName for the type in any Alfresco model
*
* @param typeQName
* @return
*/
- public static CMISTypeId getCmisTypeId(CMISScope scope, QName typeQName)
+ public CMISTypeId getCmisTypeId(CMISScope scope, QName typeQName)
{
CMISTypeId typeId = qNameToCmisTypeId.get(typeQName);
if (typeId == null)
{
StringBuilder builder = new StringBuilder(128);
- switch (scope)
- {
- case DOCUMENT:
- builder.append("D");
- break;
- case FOLDER:
- builder.append("F");
- break;
- case RELATIONSHIP:
- builder.append("R");
- break;
- default:
- builder.append("U");
- break;
- }
- builder.append(typeQName.toString());
+ builder.append(scope.discriminator());
+ builder.append("/");
+ builder.append(buildPrefixEncodedString(typeQName, false));
return new CMISTypeId(scope, typeQName, builder.toString());
}
else
@@ -249,12 +327,12 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static String getQueryName(NamespaceService namespaceService, QName typeQName)
+ public String getQueryName(QName typeQName)
{
- return buildPrefixEncodedString(namespaceService, typeQName);
+ return buildPrefixEncodedString(typeQName, true);
}
- private static String buildPrefixEncodedString(NamespaceService namespaceService, QName qname)
+ private String buildPrefixEncodedString(QName qname, boolean upperCase)
{
StringBuilder builder = new StringBuilder(128);
@@ -267,11 +345,11 @@ public class CMISMapping
}
String resolvedPrefix = prefixes.iterator().next();
- builder.append(resolvedPrefix.toUpperCase());
+ builder.append(upperCase ? resolvedPrefix.toUpperCase() : resolvedPrefix);
builder.append("_");
}
- builder.append(qname.getLocalName().toUpperCase());
+ builder.append(upperCase ? qname.getLocalName().toUpperCase() : qname.getLocalName());
return builder.toString();
}
@@ -283,9 +361,9 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static boolean isValidCmisType(DictionaryService dictionaryService, QName typeQName)
+ public boolean isValidCmisType(QName typeQName)
{
- return isValidCmisFolder(dictionaryService, typeQName) || isValidCmisDocument(dictionaryService, typeQName) || isValidCmisRelationship(dictionaryService, typeQName);
+ return isValidCmisFolder(typeQName) || isValidCmisDocument(typeQName) || isValidCmisRelationship(typeQName);
}
/**
@@ -295,9 +373,9 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static boolean isValidCmisDocumentOrFolder(DictionaryService dictionaryService, QName typeQName)
+ public boolean isValidCmisDocumentOrFolder(QName typeQName)
{
- return isValidCmisFolder(dictionaryService, typeQName) || isValidCmisDocument(dictionaryService, typeQName);
+ return isValidCmisFolder(typeQName) || isValidCmisDocument(typeQName);
}
/**
@@ -307,7 +385,7 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static boolean isValidCmisFolder(DictionaryService dictionaryService, QName typeQName)
+ public boolean isValidCmisFolder(QName typeQName)
{
if (typeQName == null)
{
@@ -340,7 +418,7 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static boolean isValidCmisDocument(DictionaryService dictionaryService, QName typeQName)
+ public boolean isValidCmisDocument(QName typeQName)
{
if (typeQName == null)
{
@@ -374,7 +452,7 @@ public class CMISMapping
* @param associationQName
* @return
*/
- public static boolean isValidCmisRelationship(DictionaryService dictionaryService, QName associationQName)
+ public boolean isValidCmisRelationship(QName associationQName)
{
if (associationQName == null)
{
@@ -393,11 +471,11 @@ public class CMISMapping
{
return false;
}
- if (!isValidCmisDocumentOrFolder(dictionaryService, getCmisType(associationDefinition.getSourceClass().getName())))
+ if (!isValidCmisDocumentOrFolder(getCmisType(associationDefinition.getSourceClass().getName())))
{
return false;
}
- if (!isValidCmisDocumentOrFolder(dictionaryService, getCmisType(associationDefinition.getTargetClass().getName())))
+ if (!isValidCmisDocumentOrFolder(getCmisType(associationDefinition.getTargetClass().getName())))
{
return false;
}
@@ -411,7 +489,7 @@ public class CMISMapping
* @param typeQName
* @return
*/
- public static QName getCmisType(QName typeQName)
+ public QName getCmisType(QName typeQName)
{
QName mapped = alfrescoToCmisTypes.get(typeQName);
if (mapped != null)
@@ -428,9 +506,9 @@ public class CMISMapping
* @param propertyQName
* @return
*/
- public static String getCmisPropertyName(NamespaceService namespaceService, QName propertyQName)
+ public String getCmisPropertyName(QName propertyQName)
{
- return buildPrefixEncodedString(namespaceService, propertyQName);
+ return buildPrefixEncodedString(propertyQName, true);
}
/**
@@ -440,14 +518,21 @@ public class CMISMapping
* @param propertyQName
* @return
*/
- public static CMISPropertyType getPropertyType(DictionaryService dictionaryService, QName propertyQName)
+ public CMISPropertyType getPropertyType(QName propertyQName)
{
PropertyDefinition propertyDefinition = dictionaryService.getProperty(propertyQName);
DataTypeDefinition dataTypeDefinition = propertyDefinition.getDataType();
QName dQName = dataTypeDefinition.getName();
- if (propertyQName.getNamespaceURI().equals(CMIS_MODEL_URI) && dQName.equals(DataTypeDefinition.QNAME))
+ if (propertyQName.getNamespaceURI().equals(CMIS_MODEL_URI))
{
- return CMISPropertyType.TYPE_ID;
+ if(dQName.equals(DataTypeDefinition.QNAME) || dQName.equals(DataTypeDefinition.NODE_REF))
+ {
+ return CMISPropertyType.ID;
+ }
+ else
+ {
+ alfrescoPropertyTypesToCimsPropertyTypes.get(dQName);
+ }
}
return alfrescoPropertyTypesToCimsPropertyTypes.get(dQName);
@@ -461,7 +546,7 @@ public class CMISMapping
* @param cmisPropertyName
* @return
*/
- public static QName getPropertyQName(DictionaryService dictionaryService, NamespaceService namespaceService, String cmisPropertyName)
+ public QName getPropertyQName(String cmisPropertyName)
{
// Try the cmis model first - it it matches we are done
QName cmisPropertyQName = QName.createQName(CMIS_MODEL_URI, cmisPropertyName);
@@ -515,7 +600,7 @@ public class CMISMapping
* @param tableName
* @return
*/
- public static QName getAlfrescoClassQNameFromCmisTableName(DictionaryService dictionaryService, NamespaceService namespaceService, String tableName)
+ public QName getAlfrescoClassQNameFromCmisTableName(String tableName)
{
if (tableName.equals(DOCUMENT_TYPE_ID.getTypeId()))
{
@@ -577,4 +662,22 @@ public class CMISMapping
return null;
}
+
+ /**
+ * @param namespaceService
+ * @param propertyQName
+ * @return
+ */
+ public String getCmisPropertyId(QName propertyQName)
+ {
+ if (propertyQName.getNamespaceURI().equals(CMIS_MODEL_URI))
+ {
+ return propertyQName.getLocalName();
+ }
+ else
+ {
+ return propertyQName.toString();
+
+ }
+ }
}
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISPropertyDefinition.java b/source/java/org/alfresco/cmis/dictionary/CMISPropertyDefinition.java
index 16a34902d6..133563ae97 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISPropertyDefinition.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISPropertyDefinition.java
@@ -39,9 +39,7 @@ import org.alfresco.repo.search.impl.lucene.analysis.PathAnalyser;
import org.alfresco.repo.search.impl.lucene.analysis.VerbatimAnalyser;
import org.alfresco.service.cmr.dictionary.Constraint;
import org.alfresco.service.cmr.dictionary.ConstraintDefinition;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
-import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
/**
@@ -53,9 +51,13 @@ public class CMISPropertyDefinition
{
private String propertyName;
+ private String propertyId;
+
private String displayName;
private String description;
+
+ private boolean isInherited;
private CMISPropertyType propertyType;
@@ -81,16 +83,18 @@ public class CMISPropertyDefinition
private boolean orderable;
- public CMISPropertyDefinition(DictionaryService dictionaryService, NamespaceService namespaceService, QName propertyQName)
+ public CMISPropertyDefinition(CMISMapping cmisMapping, QName propertyQName, QName typeQName)
{
- PropertyDefinition propDef = dictionaryService.getProperty(propertyQName);
+ PropertyDefinition propDef = cmisMapping.getDictionaryService().getProperty(propertyQName);
if (propDef.getContainerClass().getName().equals(CMISMapping.RELATIONSHIP_QNAME))
{
// Properties of associations - all the same
- propertyName = CMISMapping.getCmisPropertyName(namespaceService, propertyQName);
+ propertyName = cmisMapping.getCmisPropertyName(propertyQName);
+ propertyId = cmisMapping.getCmisPropertyId(propertyQName);
displayName = propDef.getTitle();
description = propDef.getDescription();
- propertyType = CMISMapping.getPropertyType(dictionaryService, propertyQName);
+ isInherited = false;
+ propertyType = cmisMapping.getPropertyType(propertyQName);
cardinality = propDef.isMultiValued() ? CMISCardinality.MULTI_VALUED : CMISCardinality.SINGLE_VALUED;
required = propDef.isMandatory();
defaultValue = propDef.getDefaultValue();
@@ -101,10 +105,19 @@ public class CMISPropertyDefinition
else
{
- propertyName = CMISMapping.getCmisPropertyName(namespaceService, propertyQName);
+ propertyName = cmisMapping.getCmisPropertyName(propertyQName);
+ propertyId = cmisMapping.getCmisPropertyId(propertyQName);
displayName = propDef.getTitle();
description = propDef.getDescription();
- propertyType = CMISMapping.getPropertyType(dictionaryService, propertyQName);
+ if(propDef.getContainerClass().isAspect())
+ {
+ isInherited = false;
+ }
+ else
+ {
+ isInherited = !propDef.getContainerClass().equals(typeQName);
+ }
+ propertyType = cmisMapping.getPropertyType(propertyQName);
cardinality = propDef.isMultiValued() ? CMISCardinality.MULTI_VALUED : CMISCardinality.SINGLE_VALUED;
for (ConstraintDefinition constraintDef : propDef.getConstraints())
{
@@ -175,6 +188,16 @@ public class CMISPropertyDefinition
{
return propertyName;
}
+
+ /**
+ * Get the property id
+ *
+ * @return
+ */
+ public String getPropertyId()
+ {
+ return propertyId;
+ }
/**
* Get the display name
@@ -195,6 +218,16 @@ public class CMISPropertyDefinition
{
return description;
}
+
+ /**
+ * Is the property definition inherited?
+ *
+ * @return
+ */
+ public boolean isInherited()
+ {
+ return isInherited;
+ }
/**
* Get the property type
@@ -321,8 +354,10 @@ public class CMISPropertyDefinition
StringBuilder builder = new StringBuilder();
builder.append("CMISPropertyDefinition[");
builder.append("PropertyName=").append(getPropertyName()).append(", ");
+ builder.append("PropertyId=").append(getPropertyId()).append(", ");
builder.append("DisplayName=").append(getDisplayName()).append(", ");
builder.append("Description=").append(getDescription()).append(", ");
+ builder.append("IsInherited=").append(isInherited()).append(", ");
builder.append("PropertyType=").append(getPropertyType()).append(", ");
builder.append("Cardinality=").append(getCardinality()).append(", ");
builder.append("MaximumLength=").append(getMaximumLength()).append(", ");
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISPropertyType.java b/source/java/org/alfresco/cmis/dictionary/CMISPropertyType.java
index 04b9b89fec..1d5c25c411 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISPropertyType.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISPropertyType.java
@@ -66,9 +66,5 @@ public enum CMISPropertyType
/**
* ID
*/
- ID,
- /**
- * Type Id
- */
- TYPE_ID;
+ ID;
}
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISScope.java b/source/java/org/alfresco/cmis/dictionary/CMISScope.java
index 2eeeab7b06..ca95e76a17 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISScope.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISScope.java
@@ -24,6 +24,9 @@
*/
package org.alfresco.cmis.dictionary;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* The scope for a CMIS name
@@ -37,5 +40,37 @@ package org.alfresco.cmis.dictionary;
*/
public enum CMISScope
{
- OBJECT, RELATIONSHIP, DOCUMENT, FOLDER, POLICY, UNKNOWN;
+ OBJECT ('O'),
+ RELATIONSHIP ('R'),
+ DOCUMENT ('D'),
+ FOLDER ('F'),
+ POLICY ('P'),
+ UNKNOWN ('U');
+
+ private static Map discriminatorMap = new HashMap(10);
+ static
+ {
+ for (CMISScope scope : CMISScope.values())
+ {
+ discriminatorMap.put(scope.discriminator, scope);
+ }
+ }
+
+ private char discriminator;
+
+ CMISScope(char discriminator)
+ {
+ this.discriminator = discriminator;
+ }
+
+ public char discriminator()
+ {
+ return discriminator;
+ }
+
+ public static CMISScope toScope(char discrimator)
+ {
+ return discriminatorMap.get(discrimator);
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java b/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
index 1b2b6be844..fff7df21c2 100644
--- a/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
+++ b/source/java/org/alfresco/cmis/dictionary/CMISTypeDefinition.java
@@ -32,9 +32,7 @@ import java.util.List;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.dictionary.AspectDefinition;
import org.alfresco.service.cmr.dictionary.AssociationDefinition;
-import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.TypeDefinition;
-import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
/**
@@ -56,11 +54,17 @@ public class CMISTypeDefinition
private String description;
+ private boolean creatable;
+
+ private boolean fileable;
+
private boolean queryable;
+ private boolean controllable;
+
private boolean versionable;
- private String constraints = "";
+ private ContentStreamAllowed contentStreamAllowed;
private boolean isAssociation;
@@ -68,72 +72,80 @@ public class CMISTypeDefinition
private ArrayList allowedTargetTypes = new ArrayList(1);
- public CMISTypeDefinition(DictionaryService dictionaryService, NamespaceService namespaceService, CMISTypeId typeId)
+ public CMISTypeDefinition(CMISMapping cmisMapping, CMISTypeId typeId)
{
switch (typeId.getScope())
{
case RELATIONSHIP:
- AssociationDefinition associationDefinition = dictionaryService.getAssociation(typeId.getQName());
+ AssociationDefinition associationDefinition = cmisMapping.getDictionaryService().getAssociation(typeId.getQName());
if (associationDefinition != null)
{
objectTypeId = typeId;
- objectTypeQueryName = CMISMapping.getQueryName(namespaceService, typeId.getQName());
+ objectTypeQueryName = cmisMapping.getQueryName(typeId.getQName());
displayName = associationDefinition.getTitle();
parentTypeId = CMISMapping.RELATIONSHIP_TYPE_ID;
- rootTypeQueryName = CMISMapping.getQueryName(namespaceService, CMISMapping.RELATIONSHIP_QNAME);
+ rootTypeQueryName = cmisMapping.getQueryName(CMISMapping.RELATIONSHIP_QNAME);
description = associationDefinition.getDescription();
+ creatable = false;
+ fileable = false;
queryable = false;
+ controllable = false;
versionable = false;
+ contentStreamAllowed = ContentStreamAllowed.NOT_ALLOWED;
isAssociation = true;
- QName sourceType = CMISMapping.getCmisType(associationDefinition.getSourceClass().getName());
- if (CMISMapping.isValidCmisDocument(dictionaryService, sourceType))
+ QName sourceType = cmisMapping.getCmisType(associationDefinition.getSourceClass().getName());
+ if (cmisMapping.isValidCmisDocument(sourceType))
{
- allowedSourceTypes.add(CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, sourceType));
+ allowedSourceTypes.add(cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, sourceType));
}
- else if (CMISMapping.isValidCmisFolder(dictionaryService, sourceType))
+ else if (cmisMapping.isValidCmisFolder(sourceType))
{
- allowedSourceTypes.add(CMISMapping.getCmisTypeId(CMISScope.FOLDER, sourceType));
+ allowedSourceTypes.add(cmisMapping.getCmisTypeId(CMISScope.FOLDER, sourceType));
}
- QName targetType = CMISMapping.getCmisType(associationDefinition.getTargetClass().getName());
- if (CMISMapping.isValidCmisDocument(dictionaryService, targetType))
+ QName targetType = cmisMapping.getCmisType(associationDefinition.getTargetClass().getName());
+ if (cmisMapping.isValidCmisDocument(targetType))
{
- allowedTargetTypes.add(CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, targetType));
+ allowedTargetTypes.add(cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, targetType));
}
- else if (CMISMapping.isValidCmisFolder(dictionaryService, targetType))
+ else if (cmisMapping.isValidCmisFolder(targetType))
{
- allowedTargetTypes.add(CMISMapping.getCmisTypeId(CMISScope.FOLDER, targetType));
+ allowedTargetTypes.add(cmisMapping.getCmisTypeId(CMISScope.FOLDER, targetType));
}
}
else
{
// TODO: Add CMIS Association mapping??
- TypeDefinition typeDefinition = dictionaryService.getType(typeId.getQName());
+ TypeDefinition typeDefinition = cmisMapping.getDictionaryService().getType(typeId.getQName());
objectTypeId = typeId;
- objectTypeQueryName = CMISMapping.getQueryName(namespaceService, typeId.getQName());
+ objectTypeQueryName = cmisMapping.getQueryName(typeId.getQName());
displayName = typeDefinition.getTitle();
parentTypeId = CMISMapping.RELATIONSHIP_TYPE_ID;
- rootTypeQueryName = CMISMapping.getQueryName(namespaceService, CMISMapping.RELATIONSHIP_QNAME);
+ rootTypeQueryName = cmisMapping.getQueryName(CMISMapping.RELATIONSHIP_QNAME);
description = typeDefinition.getDescription();
+ creatable = false;
+ fileable = false;
queryable = false;
+ controllable = false;
versionable = false;
+ contentStreamAllowed = ContentStreamAllowed.NOT_ALLOWED;
isAssociation = true;
}
break;
case DOCUMENT:
case FOLDER:
- TypeDefinition typeDefinition = dictionaryService.getType(typeId.getQName());
+ TypeDefinition typeDefinition = cmisMapping.getDictionaryService().getType(typeId.getQName());
if (typeDefinition != null)
{
objectTypeId = typeId;
- objectTypeQueryName = CMISMapping.getQueryName(namespaceService, typeId.getQName());
+ objectTypeQueryName = cmisMapping.getQueryName(typeId.getQName());
displayName = typeDefinition.getTitle();
- QName parentTypeQName = CMISMapping.getCmisType(typeDefinition.getParentName());
+ QName parentTypeQName = cmisMapping.getCmisType(typeDefinition.getParentName());
if (parentTypeQName == null)
{
// Core and unknown types
@@ -141,32 +153,51 @@ public class CMISTypeDefinition
}
else
{
- if (CMISMapping.isValidCmisDocument(dictionaryService, parentTypeQName))
+ if (cmisMapping.isValidCmisDocument(parentTypeQName))
{
- parentTypeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, parentTypeQName);
+ parentTypeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, parentTypeQName);
}
- else if (CMISMapping.isValidCmisFolder(dictionaryService, parentTypeQName))
+ else if (cmisMapping.isValidCmisFolder(parentTypeQName))
{
- parentTypeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, parentTypeQName);
+ parentTypeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, parentTypeQName);
}
}
- rootTypeQueryName = CMISMapping.getQueryName(namespaceService, typeId.getRootTypeId().getQName());
+ rootTypeQueryName = cmisMapping.getQueryName(typeId.getRootTypeId().getQName());
description = typeDefinition.getDescription();
+ creatable = true;
+
+ fileable = true;
+
queryable = true;
+ controllable = false;
+
versionable = false;
- List defaultAspects = typeDefinition.getDefaultAspects();
- for (AspectDefinition aspectDefinition : defaultAspects)
+
+ if (typeId.getScope() == CMISScope.DOCUMENT)
{
- if (aspectDefinition.getName().equals(ContentModel.ASPECT_VERSIONABLE))
+ List defaultAspects = typeDefinition.getDefaultAspects();
+ for (AspectDefinition aspectDefinition : defaultAspects)
{
- versionable = true;
- break;
+ if (aspectDefinition.getName().equals(ContentModel.ASPECT_VERSIONABLE))
+ {
+ versionable = true;
+ break;
+ }
}
}
+
+ if (typeId.getScope() == CMISScope.DOCUMENT)
+ {
+ contentStreamAllowed = ContentStreamAllowed.ALLOWED;
+ }
+ else
+ {
+ contentStreamAllowed = ContentStreamAllowed.NOT_ALLOWED;
+ }
}
break;
@@ -175,7 +206,6 @@ public class CMISTypeDefinition
break;
}
-
}
/**
@@ -241,6 +271,26 @@ public class CMISTypeDefinition
return description;
}
+ /**
+ * Can objects of this type be created?
+ *
+ * @return
+ */
+ public boolean isCreatable()
+ {
+ return creatable;
+ }
+
+ /**
+ * Are objects of this type fileable?
+ *
+ * @return
+ */
+ public boolean isFileable()
+ {
+ return fileable;
+ }
+
/**
* Is this type queryable? If not, the type may not appear in the FROM clause of a query. This property of the type
* is not inherited in the type hierarchy. It is set on each type.
@@ -252,6 +302,16 @@ public class CMISTypeDefinition
return queryable;
}
+ /**
+ * Are objects of this type controllable.
+ *
+ * @return
+ */
+ public boolean isControllable()
+ {
+ return controllable;
+ }
+
/**
* Is this type versionable? If true this implies all instances of the type are versionable.
*
@@ -263,13 +323,13 @@ public class CMISTypeDefinition
}
/**
- * Get the constraints for the type. These are not currently supported.
+ * Is a content stream allowed for this type? It may be disallowed, optional or mandatory.
*
* @return
*/
- public String getConstraints()
+ public ContentStreamAllowed getContentStreamAllowed()
{
- return constraints;
+ return contentStreamAllowed;
}
/**
@@ -312,9 +372,12 @@ public class CMISTypeDefinition
builder.append("ParentTypeId=").append(getParentTypeId()).append(", ");
builder.append("RootTypeQueryName=").append(getRootTypeQueryName()).append(", ");
builder.append("Description=").append(getDescription()).append(", ");
+ builder.append("Creatable=").append(isCreatable()).append(", ");
+ builder.append("Fileable=").append(isFileable()).append(", ");
builder.append("Queryable=").append(isQueryable()).append(", ");
+ builder.append("Controllable=").append(isControllable()).append(", ");
builder.append("Versionable=").append(isVersionable()).append(", ");
- builder.append("Constraints=").append(getConstraints()).append(", ");
+ builder.append("ContentStreamAllowed=").append(getContentStreamAllowed()).append(", ");
builder.append("IsAssociation=").append(isAssociation()).append(", ");
builder.append("AllowedSourceTypes=").append(getAllowedSourceTypes()).append(", ");
builder.append("AllowedTargetTypes=").append(getAllowedTargetTypes());
diff --git a/source/java/org/alfresco/cmis/dictionary/ContentStreamAllowed.java b/source/java/org/alfresco/cmis/dictionary/ContentStreamAllowed.java
new file mode 100644
index 0000000000..db015f4b67
--- /dev/null
+++ b/source/java/org/alfresco/cmis/dictionary/ContentStreamAllowed.java
@@ -0,0 +1,34 @@
+/*
+ * 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.cmis.dictionary;
+
+/**
+ * @author andyh
+ *
+ */
+public enum ContentStreamAllowed
+{
+ NOT_ALLOWED, ALLOWED, REQUIRED;
+}
diff --git a/source/java/org/alfresco/cmis/property/AbstractPropertyAccessor.java b/source/java/org/alfresco/cmis/property/AbstractPropertyAccessor.java
index 551d47c70e..04d9d16ac9 100644
--- a/source/java/org/alfresco/cmis/property/AbstractPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/AbstractPropertyAccessor.java
@@ -24,6 +24,7 @@
*/
package org.alfresco.cmis.property;
+import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.service.ServiceRegistry;
/**
@@ -34,8 +35,17 @@ import org.alfresco.service.ServiceRegistry;
*/
public abstract class AbstractPropertyAccessor
{
+ private CMISMapping cmisMapping;
private ServiceRegistry serviceRegistry;
+ /**
+ * @param cmisMapping
+ */
+ public void setCMISMapping(CMISMapping cmisMapping)
+ {
+ this.cmisMapping = cmisMapping;
+ }
+
public void setServiceRegistry(ServiceRegistry serviceRegistry)
{
this.serviceRegistry = serviceRegistry;
@@ -46,4 +56,9 @@ public abstract class AbstractPropertyAccessor
return serviceRegistry;
}
+ public CMISMapping getCMISMapping()
+ {
+ return cmisMapping;
+ }
+
}
diff --git a/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java b/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
index a51c5685e6..02ff0f5b0a 100644
--- a/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
+++ b/source/java/org/alfresco/cmis/property/CMISPropertyServiceImpl.java
@@ -31,6 +31,7 @@ import java.util.Map;
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.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -48,10 +49,23 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
private AbstractGenericPropertyAccessor genericPropertyAccessor;
+ private CMISMapping cmisMapping;
+
private ServiceRegistry serviceRegistry;
private boolean strict = false;
+ /**
+ * @param cmisMapping
+ */
+ public void setCMISMapping(CMISMapping cmisMapping)
+ {
+ this.cmisMapping = cmisMapping;
+ }
+
+ /**
+ * @param serviceRegistry
+ */
public void setServiceRegistry(ServiceRegistry serviceRegistry)
{
this.serviceRegistry = serviceRegistry;
@@ -70,13 +84,13 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
public Map getProperties(NodeRef nodeRef)
{
// Map
- QName typeQName = CMISMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
+ QName typeQName = cmisMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
CMISScope scope;
- if (CMISMapping.isValidCmisDocument(serviceRegistry.getDictionaryService(), typeQName))
+ if (cmisMapping.isValidCmisDocument(typeQName))
{
scope = CMISScope.DOCUMENT;
}
- else if (CMISMapping.isValidCmisFolder(serviceRegistry.getDictionaryService(), typeQName))
+ else if (cmisMapping.isValidCmisFolder(typeQName))
{
scope = CMISScope.FOLDER;
}
@@ -96,7 +110,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
Map unmapped = serviceRegistry.getNodeService().getProperties(nodeRef);
for (QName propertyQName : unmapped.keySet())
{
- String cmisPropertyName = CMISMapping.getCmisPropertyName(serviceRegistry.getNamespaceService(), propertyQName);
+ String cmisPropertyName = cmisMapping.getCmisPropertyName(propertyQName);
mapped.put(cmisPropertyName, unmapped.get(propertyQName));
}
}
@@ -116,13 +130,13 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
public Serializable getProperty(NodeRef nodeRef, String propertyName)
{
- QName typeQName = CMISMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
+ QName typeQName = cmisMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
CMISScope scope;
- if (CMISMapping.isValidCmisDocument(serviceRegistry.getDictionaryService(), typeQName))
+ if (cmisMapping.isValidCmisDocument(typeQName))
{
scope = CMISScope.DOCUMENT;
}
- else if (CMISMapping.isValidCmisFolder(serviceRegistry.getDictionaryService(), typeQName))
+ else if (cmisMapping.isValidCmisFolder(typeQName))
{
scope = CMISScope.FOLDER;
}
@@ -177,9 +191,10 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
// Generic Alfresco mappings
genericPropertyAccessor = new MappingPropertyAccessor();
genericPropertyAccessor.setServiceRegistry(serviceRegistry);
+ genericPropertyAccessor.setCMISMapping(cmisMapping);
// CMIS Object
- addNamedPropertyAccessor(new ObjectIdPropertyAccessor());
+ addNamedPropertyAccessor(getObjectIdPropertyAccessor());
addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_URI, null, CMISScope.OBJECT));
addNamedPropertyAccessor(getObjectTypeIdPropertyAccessor());
addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_CREATED_BY, ContentModel.PROP_CREATOR, CMISScope.OBJECT));
@@ -191,16 +206,18 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
// CMIS Document and Folder
addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_NAME, ContentModel.PROP_NAME, CMISScope.OBJECT));
- // CMIS Docuement
+ // CMIS Document
addNamedPropertyAccessor(getIsImmutablePropertyAccessor());
addNamedPropertyAccessor(getIsLatestVersionPropertyAccessor());
addNamedPropertyAccessor(getIsMajorVersionPropertyAccessor());
addNamedPropertyAccessor(getIsLatestMajorVersionPropertyAccessor());
+ addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_VERSION_LABEL, ContentModel.PROP_VERSION_LABEL, CMISScope.DOCUMENT));
+ addNamedPropertyAccessor(getVersionSeriesIdPropertyAccessor());
addNamedPropertyAccessor(getVersionSeriesIsCheckedOutPropertyAccessor());
addNamedPropertyAccessor(getVersionSeriesCheckedOutByPropertyAccessor());
addNamedPropertyAccessor(getVersionSeriesCheckedOutIdPropertyAccessor());
addNamedPropertyAccessor(getCheckinCommentPropertyAccessor());
- addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_ALLOWED, Boolean.valueOf(true), CMISScope.DOCUMENT));
+ addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_ALLOWED, ContentStreamAllowed.ALLOWED.toString(), CMISScope.DOCUMENT));
addNamedPropertyAccessor(getContentStreamLengthPropertyAccessor());
addNamedPropertyAccessor(getContentStreamMimetypePropertyAccessor());
addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_FILENAME, ContentModel.PROP_NAME, CMISScope.DOCUMENT));
@@ -221,6 +238,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
SimplePropertyAccessor accessor = new SimplePropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
accessor.setPropertyName(propertyName);
accessor.setMapping(to.toString());
accessor.setScope(scope);
@@ -236,10 +254,19 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
return accessor;
}
+ public NamedPropertyAccessor getObjectIdPropertyAccessor()
+ {
+ ObjectIdPropertyAccessor accessor = new ObjectIdPropertyAccessor();
+ accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
+ return accessor;
+ }
+
public NamedPropertyAccessor getFixedValuePropertyAccessor(String propertyName, Serializable fixedValue, CMISScope scope)
{
FixedValuePropertyAccessor accessor = new FixedValuePropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
accessor.setPropertyName(propertyName);
accessor.setFixedValue(fixedValue);
accessor.setScope(scope);
@@ -250,6 +277,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
ObjectTypeIdPropertyAccessor accessor = new ObjectTypeIdPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -257,6 +285,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
IsImmutablePropertyAccessor accessor = new IsImmutablePropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -264,6 +293,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
IsLatestVersionPropertyAccessor accessor = new IsLatestVersionPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -271,6 +301,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
IsMajorVersionPropertyAccessor accessor = new IsMajorVersionPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -278,13 +309,23 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
IsLatestMajorVersionPropertyAccessor accessor = new IsLatestMajorVersionPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
+ public NamedPropertyAccessor getVersionSeriesIdPropertyAccessor()
+ {
+ VersionSeriesIdPropertyAccessor accessor = new VersionSeriesIdPropertyAccessor();
+ accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
+ return accessor;
+ }
+
public NamedPropertyAccessor getVersionSeriesIsCheckedOutPropertyAccessor()
{
VersionSeriesIsCheckedOutPropertyAccessor accessor = new VersionSeriesIsCheckedOutPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -292,6 +333,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
VersionSeriesCheckedOutByPropertyAccessor accessor = new VersionSeriesCheckedOutByPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -299,6 +341,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
VersionSeriesCheckedOutIdPropertyAccessor accessor = new VersionSeriesCheckedOutIdPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -306,6 +349,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
CheckinCommentPropertyAccessor accessor = new CheckinCommentPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -313,6 +357,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
ContentStreamLengthPropertyAccessor accessor = new ContentStreamLengthPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -320,6 +365,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
ContentStreamMimetypePropertyAccessor accessor = new ContentStreamMimetypePropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
@@ -327,6 +373,7 @@ public class CMISPropertyServiceImpl implements CMISPropertyService, Initializin
{
ParentPropertyAccessor accessor = new ParentPropertyAccessor();
accessor.setServiceRegistry(serviceRegistry);
+ accessor.setCMISMapping(cmisMapping);
return accessor;
}
diff --git a/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java b/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
index cf36c6d0e0..6ff6dc58e0 100644
--- a/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
+++ b/source/java/org/alfresco/cmis/property/CMISPropertyServiceTest.java
@@ -31,6 +31,7 @@ import java.util.Map;
import org.alfresco.cmis.dictionary.BaseCMISTest;
import org.alfresco.cmis.dictionary.CMISMapping;
+import org.alfresco.cmis.dictionary.ContentStreamAllowed;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.version.VersionModel;
import org.alfresco.service.cmr.lock.LockType;
@@ -46,9 +47,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
{
NodeRef folder = fileFolderService.create(rootNodeRef, "BaseFolder", ContentModel.TYPE_FOLDER).getNodeRef();
Map properties = cmisPropertyService.getProperties(folder);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), folder);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), folder.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.FOLDER_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.FOLDER_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -61,6 +62,8 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(properties.get(CMISMapping.PROP_IS_LATEST_VERSION));
assertNull(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION));
assertNull(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION));
+ assertNull(properties.get(CMISMapping.PROP_VERSION_LABEL));
+ assertNull(properties.get(CMISMapping.PROP_VERSION_SERIES_ID));
assertNull(properties.get(CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT));
assertNull(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY));
assertNull(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID));
@@ -71,7 +74,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME));
assertNull(properties.get(CMISMapping.PROP_CONTENT_STREAM_URI));
- assertEquals(properties.get(CMISMapping.PROP_PARENT), rootNodeRef);
+ assertEquals(properties.get(CMISMapping.PROP_PARENT), rootNodeRef.toString());
assertNull(properties.get(CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
}
@@ -81,9 +84,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
NodeRef content = fileFolderService.create(rootNodeRef, "BaseContent", ContentModel.TYPE_CONTENT).getNodeRef();
Map properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -96,11 +99,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -116,9 +121,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
NodeRef content = fileFolderService.create(rootNodeRef, "BaseContent", ContentModel.TYPE_CONTENT).getNodeRef();
Map properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -131,11 +136,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -156,7 +163,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
long size = writer.getSize();
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), size);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "text/plain");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -168,9 +175,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
NodeRef content = fileFolderService.create(rootNodeRef, "BaseContent", ContentModel.TYPE_CONTENT).getNodeRef();
Map properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -183,11 +190,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -203,6 +212,8 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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);
@@ -211,9 +222,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getLockService().unlock(content);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -226,11 +237,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -246,9 +259,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
NodeRef content = fileFolderService.create(rootNodeRef, "BaseContent", ContentModel.TYPE_CONTENT).getNodeRef();
Map properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -261,11 +274,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -281,16 +296,18 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), 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);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
properties = cmisPropertyService.getProperties(pwc);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -303,11 +320,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), false);
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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent (Working Copy)");
@@ -319,9 +338,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getCheckOutCheckInService().cancelCheckout(pwc);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -334,11 +353,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -354,16 +375,18 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), 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);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
properties = cmisPropertyService.getProperties(pwc);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -376,11 +399,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), false);
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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent (Working Copy)");
@@ -392,9 +417,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getCheckOutCheckInService().checkin(pwc, null);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -407,11 +432,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -427,9 +454,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
NodeRef content = fileFolderService.create(rootNodeRef, "BaseContent", ContentModel.TYPE_CONTENT).getNodeRef();
Map properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -442,11 +469,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -458,9 +487,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
nodeService.addAspect(content, ContentModel.ASPECT_VERSIONABLE, null);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -473,11 +502,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -493,16 +524,18 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), 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);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
properties = cmisPropertyService.getProperties(pwc);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -515,11 +548,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), false);
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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent (Working Copy)");
@@ -531,9 +566,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getCheckOutCheckInService().cancelCheckout(pwc);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -546,11 +581,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), content.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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -566,16 +603,18 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
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), 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);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), null);
properties = cmisPropertyService.getProperties(pwc);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -588,11 +627,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), false);
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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent (Working Copy)");
@@ -607,9 +648,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getCheckOutCheckInService().checkin(pwc, versionProperties);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString()+"/1.0");
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -622,11 +663,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), true);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_LABEL), "1.0");
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.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_CHECKIN_COMMENT), "Meep");
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -642,16 +685,18 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), true);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), true);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_LABEL), "1.0");
+ 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);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID), pwc.toString());
assertEquals(properties.get(CMISMapping.PROP_CHECKIN_COMMENT), "Meep");
properties = cmisPropertyService.getProperties(pwc);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), pwc.toString());
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -664,11 +709,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), false);
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_CHECKIN_COMMENT), null);
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent (Working Copy)");
@@ -683,9 +730,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
serviceRegistry.getCheckOutCheckInService().checkin(pwc, versionProperties);
properties = cmisPropertyService.getProperties(content);
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_ID), content.toString()+"/1.1");
assertNull(properties.get(CMISMapping.PROP_URI));
- assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID);
+ assertEquals(properties.get(CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.DOCUMENT_TYPE_ID.getTypeId());
assertEquals(properties.get(CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(properties.get(CMISMapping.PROP_CREATION_DATE));
assertEquals(properties.get(CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -698,11 +745,13 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_VERSION), true);
assertEquals(properties.get(CMISMapping.PROP_IS_MAJOR_VERSION), false);
assertEquals(properties.get(CMISMapping.PROP_IS_LATEST_MAJOR_VERSION), false);
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_LABEL), "1.1");
+ assertEquals(properties.get(CMISMapping.PROP_VERSION_SERIES_ID), content.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_CHECKIN_COMMENT), "Woof");
- assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), true);
+ assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_ALLOWED), ContentStreamAllowed.ALLOWED.toString());
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_LENGTH), 0L);
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_MIMETYPE), "application/octet-stream");
assertEquals(properties.get(CMISMapping.PROP_CONTENT_STREAM_FILENAME), "BaseContent");
@@ -715,9 +764,9 @@ public class CMISPropertyServiceTest extends BaseCMISTest
public void testSinglePropertyFolderAccess()
{
NodeRef folder = fileFolderService.create(rootNodeRef, "BaseFolder", ContentModel.TYPE_FOLDER).getNodeRef();
- assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_OBJECT_ID), folder);
+ assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_OBJECT_ID), folder.toString());
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_URI));
- assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.FOLDER_TYPE_ID);
+ assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_OBJECT_TYPE_ID), CMISMapping.FOLDER_TYPE_ID.getTypeId());
assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_CREATED_BY), authenticationComponent.getCurrentUserName());
assertNotNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_CREATION_DATE));
assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_LAST_MODIFIED_BY), authenticationComponent.getCurrentUserName());
@@ -730,6 +779,8 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_IS_LATEST_VERSION));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_IS_MAJOR_VERSION));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_IS_LATEST_MAJOR_VERSION));
+ assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_VERSION_LABEL));
+ assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_VERSION_SERIES_ID));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_VERSION_SERIES_IS_CHECKED_OUT));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_BY));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_VERSION_SERIES_CHECKED_OUT_ID));
@@ -740,7 +791,7 @@ public class CMISPropertyServiceTest extends BaseCMISTest
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_CONTENT_STREAM_FILENAME));
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_CONTENT_STREAM_URI));
- assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_PARENT), rootNodeRef);
+ assertEquals(cmisPropertyService.getProperty(folder, CMISMapping.PROP_PARENT), rootNodeRef.toString());
assertNull(cmisPropertyService.getProperty(folder, CMISMapping.PROP_ALLLOWED_CHILD_OBJECT_TYPES));
assertEquals(cmisPropertyService.getProperty(folder, "CM_NAME"), "BaseFolder");
diff --git a/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java b/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
index 490c95b8fc..49aa41e58e 100644
--- a/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/MappingPropertyAccessor.java
@@ -26,7 +26,6 @@ package org.alfresco.cmis.property;
import java.io.Serializable;
-import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
@@ -39,7 +38,7 @@ public class MappingPropertyAccessor extends AbstractGenericPropertyAccessor
{
public Serializable getProperty(NodeRef nodeRef, String propertyName)
{
- QName propertyQname = CMISMapping.getPropertyQName(getServiceRegistry().getDictionaryService(), getServiceRegistry().getNamespaceService(), propertyName);
+ QName propertyQname = getCMISMapping().getPropertyQName(propertyName);
return getServiceRegistry().getNodeService().getProperty(nodeRef, propertyQname);
}
diff --git a/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
index 9319a3fc2d..3956f5dd1b 100644
--- a/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ObjectIdPropertyAccessor.java
@@ -28,20 +28,37 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
/**
* Get the CMIS object id property.
*
* @author andyh
- *
*/
public class ObjectIdPropertyAccessor extends AbstractNamedPropertyAccessor
{
public Serializable getProperty(NodeRef nodeRef)
{
- return nodeRef;
+ if (getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE))
+ {
+ Serializable value = getServiceRegistry().getNodeService().getProperty(nodeRef, ContentModel.PROP_VERSION_LABEL);
+ if (value != null)
+ {
+ String versionLabel = DefaultTypeConverter.INSTANCE.convert(String.class, value);
+ StringBuilder builder = new StringBuilder(128);
+ builder.append(nodeRef.toString());
+ builder.append("/");
+ builder.append(versionLabel);
+ return builder.toString();
+ }
+
+ }
+
+ return nodeRef.toString();
+
}
@Override
@@ -53,9 +70,7 @@ public class ObjectIdPropertyAccessor extends AbstractNamedPropertyAccessor
@Override
public CMISScope getScope()
{
- return CMISScope.OBJECT;
+ return CMISScope.OBJECT;
}
-
-
}
diff --git a/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
index f8dce8e877..c9045aff27 100644
--- a/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ObjectTypeIdPropertyAccessor.java
@@ -42,13 +42,13 @@ public class ObjectTypeIdPropertyAccessor extends AbstractNamedPropertyAccessor
public Serializable getProperty(NodeRef nodeRef)
{
- QName typeQName = CMISMapping.getCmisType(getServiceRegistry().getNodeService().getType(nodeRef));
+ QName typeQName = getCMISMapping().getCmisType(getServiceRegistry().getNodeService().getType(nodeRef));
CMISScope scope;
- if(CMISMapping.isValidCmisDocument(getServiceRegistry().getDictionaryService(), typeQName))
+ if(getCMISMapping().isValidCmisDocument(typeQName))
{
scope = CMISScope.DOCUMENT;
}
- else if(CMISMapping.isValidCmisFolder(getServiceRegistry().getDictionaryService(), typeQName))
+ else if(getCMISMapping().isValidCmisFolder(typeQName))
{
scope = CMISScope.FOLDER;
}
@@ -56,7 +56,7 @@ public class ObjectTypeIdPropertyAccessor extends AbstractNamedPropertyAccessor
{
scope = CMISScope.UNKNOWN;
}
- return CMISMapping.getCmisTypeId(scope, typeQName);
+ return getCMISMapping().getCmisTypeId(scope, typeQName).getTypeId();
}
@Override
@@ -64,7 +64,6 @@ public class ObjectTypeIdPropertyAccessor extends AbstractNamedPropertyAccessor
{
return CMISMapping.PROP_OBJECT_TYPE_ID;
}
-
@Override
public CMISScope getScope()
diff --git a/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java b/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
index 32307885e0..1e9615d7fc 100644
--- a/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/ParentPropertyAccessor.java
@@ -28,6 +28,7 @@ import java.io.Serializable;
import org.alfresco.cmis.dictionary.CMISMapping;
import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -41,7 +42,15 @@ public class ParentPropertyAccessor extends AbstractNamedPropertyAccessor
public Serializable getProperty(NodeRef nodeRef)
{
- return getServiceRegistry().getNodeService().getPrimaryParent(nodeRef).getParentRef();
+ ChildAssociationRef car = getServiceRegistry().getNodeService().getPrimaryParent(nodeRef);
+ if((car != null) && (car.getParentRef() != null))
+ {
+ return car.getParentRef().toString();
+ }
+ else
+ {
+ return null;
+ }
}
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
index 9db8d642a3..ea7663c6fd 100644
--- a/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesCheckedOutIdPropertyAccessor.java
@@ -51,7 +51,8 @@ public class VersionSeriesCheckedOutIdPropertyAccessor extends AbstractNamedProp
LockType type = getServiceRegistry().getLockService().getLockType(nodeRef);
if (type == LockType.READ_ONLY_LOCK)
{
- return getServiceRegistry().getCheckOutCheckInService().getWorkingCopy(nodeRef);
+ NodeRef pwc = getServiceRegistry().getCheckOutCheckInService().getWorkingCopy(nodeRef);
+ return (pwc == null) ? null : pwc.toString();
}
else
{
diff --git a/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java b/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java
new file mode 100644
index 0000000000..83c9cb1cf4
--- /dev/null
+++ b/source/java/org/alfresco/cmis/property/VersionSeriesIdPropertyAccessor.java
@@ -0,0 +1,59 @@
+/*
+ * 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.cmis.property;
+
+import java.io.Serializable;
+
+import org.alfresco.cmis.dictionary.CMISMapping;
+import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.service.cmr.repository.NodeRef;
+
+/**
+ * @author andyh
+ *
+ */
+public class VersionSeriesIdPropertyAccessor extends AbstractNamedPropertyAccessor
+{
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.property.NamedPropertyAccessor#getProperty(org.alfresco.service.cmr.repository.NodeRef)
+ */
+ public Serializable getProperty(NodeRef nodeRef)
+ {
+ return nodeRef.toString();
+ }
+
+ @Override
+ public String getPropertyName()
+ {
+ return CMISMapping.PROP_VERSION_SERIES_ID;
+ }
+
+ @Override
+ public CMISScope getScope()
+ {
+ return CMISScope.DOCUMENT;
+ }
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISQueryOptions.java b/source/java/org/alfresco/cmis/search/CMISQueryOptions.java
new file mode 100644
index 0000000000..ecf0e99c06
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISQueryOptions.java
@@ -0,0 +1,351 @@
+/*
+ * 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.cmis.search;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import org.alfresco.i18n.I18NUtil;
+import org.alfresco.repo.search.MLAnalysisMode;
+import org.alfresco.service.cmr.repository.StoreRef;
+import org.alfresco.service.cmr.search.QueryParameterDefinition;
+
+/**
+ * The options for a CMIS query
+ *
+ * @author andyh
+ */
+public class CMISQueryOptions
+{
+ public enum Connective
+ {
+ AND, OR;
+ }
+
+ public enum CMISQueryMode
+ {
+ STRICT;
+ }
+
+ private String query;
+
+ private List stores = new ArrayList(1);
+
+ private int maxItems = -1;
+
+ private int skipCount = 0;
+
+ private Connective defaultFTSConnective = Connective.AND;
+
+ private Connective defaultFTSFieldConnective = Connective.AND;
+
+ private CMISQueryMode queryMode = CMISQueryMode.STRICT;
+
+ private int fetchSize = 1000;
+
+ private List locales = new ArrayList(1);
+
+ private MLAnalysisMode mlAnalaysisMode = MLAnalysisMode.EXACT_LANGUAGE_AND_ALL;
+
+ private List queryParameterDefinitions = new ArrayList(4);
+
+ private boolean includeInTransactionData = true;
+
+ /**
+ * Create a CMISQueryOptions instance with the default options other than the query and store ref.
+ * The query will be run using the locale returned by I18NUtil.getLocale()
+ *
+ * @param query - the query to run
+ * @param storeRef - the store against which to run the query
+ */
+ public CMISQueryOptions(String query, StoreRef storeRef)
+ {
+ this(query, storeRef, I18NUtil.getLocale());
+ }
+
+ /**
+ * Create a CMISQueryOptions instance with the default options other than the query, store ref and locale.
+ *
+ * @param query - the query to run
+ * @param storeRef - the store against which to run the query
+ */
+ public CMISQueryOptions(String query, StoreRef storeRef, Locale locale)
+ {
+ this.query = query;
+ this.stores.add(storeRef);
+ this.locales.add(locale);
+ }
+
+ /**
+ * Get the query string
+ *
+ * @return the query
+ */
+ public String getQuery()
+ {
+ return query;
+ }
+
+ /**
+ * Set the query string
+ *
+ * @param query the query to set
+ */
+ public void setQuery(String query)
+ {
+ this.query = query;
+ }
+
+ /**
+ * Get the list of stores in which to run the query.
+ * Only one store is supported at the momentOnly one store is supported at the moment
+ *
+ * @return the stores
+ */
+ public List getStores()
+ {
+ return stores;
+ }
+
+ /**
+ * Set the stores against which to run the query.
+ * Only one store is supported at the moment.
+ *
+ * @param stores the stores to set
+ */
+ public void setStores(List stores)
+ {
+ this.stores = stores;
+ }
+
+ /**
+ * Get the max number of rows for the result set
+ * 0 or less is unlimited
+ *
+ * @return the maxItems
+ */
+ public int getMaxItems()
+ {
+ return maxItems;
+ }
+
+ /**
+ * Set the max number of rows for the result set
+ * 0 or less is unlimited
+ *
+ * @param maxItems the maxItems to set
+ */
+ public void setMaxItems(int maxItems)
+ {
+ this.maxItems = maxItems;
+ }
+
+ /**
+ * Get the skip count - the number of rows to skip at the start of the query.
+ *
+ * @return the skipCount
+ */
+ public int getSkipCount()
+ {
+ return skipCount;
+ }
+
+ /**
+ * Set the skip count - the number of rows to skip at the start of the query.
+ *
+ * @param skipCount the skipCount to set
+ */
+ public void setSkipCount(int skipCount)
+ {
+ this.skipCount = skipCount;
+ }
+
+ /**
+ * Get the default connective used when OR and AND are not specified for the FTS contains() function.
+ *
+ * @return the defaultFTSConnective
+ */
+ public Connective getDefaultFTSConnective()
+ {
+ return defaultFTSConnective;
+ }
+
+ /**
+ * Set the default connective used when OR and AND are not specified for the FTS contains() function.
+ *
+ * @param defaultFTSConnective the defaultFTSConnective to set
+ */
+ public void setDefaultFTSConnective(Connective defaultFTSConnective)
+ {
+ this.defaultFTSConnective = defaultFTSConnective;
+ }
+
+ /**
+ * As getDefaultFTSConnective() but for field groups
+ *
+ * @return the defaultFTSFieldConnective
+ */
+ public Connective getDefaultFTSFieldConnective()
+ {
+ return defaultFTSFieldConnective;
+ }
+
+ /**
+ * As setDefaultFTSConnective() but for field groups
+ *
+ * @param defaultFTSFieldConnective the defaultFTSFieldConnective to set
+ */
+ public void setDefaultFTSFieldConnective(Connective defaultFTSFieldConnective)
+ {
+ this.defaultFTSFieldConnective = defaultFTSFieldConnective;
+ }
+
+ /**
+ * Get the query mode.
+ *
+ * @return the queryMode
+ */
+ public CMISQueryMode getQueryMode()
+ {
+ return queryMode;
+ }
+
+ /**
+ * Set the query mode.
+ *
+ * @param queryMode the queryMode to set
+ */
+ public void setQueryMode(CMISQueryMode queryMode)
+ {
+ this.queryMode = queryMode;
+ }
+
+ /**
+ * Get the fetch size
+ * 0 - no prefetch
+ * -1 - prefetch all
+ *
+ * @return the fetchSize
+ */
+ public int getFetchSize()
+ {
+ return fetchSize;
+ }
+
+ /**
+ * Set the fetch size
+ * 0 - no prefetch
+ * -1 - prefetch all
+ *
+ * @param fetchSize the fetchSize to set
+ */
+ public void setFetchSize(int fetchSize)
+ {
+ this.fetchSize = fetchSize;
+ }
+
+ /**
+ * Get the list of locales to use for the query
+ *
+ * @return the locales
+ */
+ public List getLocales()
+ {
+ return locales;
+ }
+
+ /**
+ * sSet the list of locales to use for the query
+ *
+ * @param locales the locales to set
+ */
+ public void setLocales(List locales)
+ {
+ this.locales = locales;
+ }
+
+ /**
+ * Get the mode for multi-lingual text analaysis
+ *
+ * @return the mlAnalaysisMode
+ */
+ public MLAnalysisMode getMlAnalaysisMode()
+ {
+ return mlAnalaysisMode;
+ }
+
+ /**
+ * Set the mode for multi-lingual text analaysis
+ *
+ * @param mlAnalaysisMode the mlAnalaysisMode to set
+ */
+ public void setMlAnalaysisMode(MLAnalysisMode mlAnalaysisMode)
+ {
+ this.mlAnalaysisMode = mlAnalaysisMode;
+ }
+
+ /**
+ * Get the query parameters
+ *
+ * @return the queryParameterDefinitions
+ */
+ public List getQueryParameterDefinitions()
+ {
+ return queryParameterDefinitions;
+ }
+
+ /**
+ * Set the query parameters
+ *
+ * @param queryParameterDefinitions the queryParameterDefinitions to set
+ */
+ public void setQueryParameterDefinitions(List queryParameterDefinitions)
+ {
+ this.queryParameterDefinitions = queryParameterDefinitions;
+ }
+
+ /**
+ * Does the search include any changes made in the current transaction?
+ *
+ * @return the includeInTransactionData
+ */
+ public boolean isIncludeInTransactionData()
+ {
+ return includeInTransactionData;
+ }
+
+ /**
+ * Set to true if the search include any changes made in the current transaction.
+ *
+ * @param includeInTransactionData the includeInTransactionData to set
+ */
+ public void setIncludeInTransactionData(boolean includeInTransactionData)
+ {
+ this.includeInTransactionData = includeInTransactionData;
+ }
+
+
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISQueryService.java b/source/java/org/alfresco/cmis/search/CMISQueryService.java
new file mode 100644
index 0000000000..a48b87c8df
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISQueryService.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.cmis.search;
+
+/**
+ * Support to execute CMIS queries
+ *
+ * @author andyh
+ *
+ */
+public interface CMISQueryService
+{
+ /**
+ * Execute a CMIS query as defined by options
+ *
+ * @param options
+ * @return a result set
+ */
+ public CMISResultSet query(CMISQueryOptions options);
+
+ /**
+ * Execute a CMIS query with all the default options;
+ *
+ * @param query
+ * @return
+ */
+ public CMISResultSet query(String query);
+
+ /**
+ * Can you query non-latest versions of a document.
+ * The current latest version is always searchable according to the type definition.
+ * @return
+ */
+ public boolean getAllVersionsSearchable();
+
+ /**
+ * Get the join support level in queries.
+ * @return
+ */
+ public JoinSupport getJoinSupport();
+
+ /**
+ * Get the full text search support level in queries.
+ */
+ public FullTextSearchSupport getFullTextSearchSupport();
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSet.java b/source/java/org/alfresco/cmis/search/CMISResultSet.java
new file mode 100644
index 0000000000..4ec4aaef95
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISResultSet.java
@@ -0,0 +1,84 @@
+/*
+ * 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.cmis.search;
+
+
+/**
+ * A CMIS result set
+ *
+ * @author andyh
+ *
+ */
+public interface CMISResultSet extends Iterable
+{
+ /**
+ * Get the result set meta-data.
+ * @return
+ */
+ public CMISResultSetMetaData getMetaData();
+
+ /**
+ * Get the start point for this results set in the overall
+ * set of rows that match the query - this will be equals to the skip count
+ * set when executing the query.
+ * @return
+ */
+ public int start();
+
+ /**
+ * Get the number of rows in this result set.
+ *
+ * This will be less than or equal to the maximum number of rows requested or
+ * the full length if no restriction on length is specified.
+ *
+ * If a skip count is given, the length represents the number of results
+ * after the skip count and does not include the items skipped.
+ *
+ * @return
+ */
+ public int length();
+
+ /**
+ * Close the result set and release any resources held/
+ * The result set is also bound to the transaction and will auto close at
+ * the end of the transaction.
+ */
+ public void close();
+
+ /**
+ * Was this result set curtailed - are there more pages to the result set?
+ * @return
+ */
+ public boolean hasMore();
+
+
+ /**
+ * Get the given row
+ * @param i -the position in this result set - start + i gives the position in the overall result set
+ * @return
+ */
+ public CMISResultSetRow getRow(int i);
+
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSetColumn.java b/source/java/org/alfresco/cmis/search/CMISResultSetColumn.java
new file mode 100644
index 0000000000..c8582c8f1d
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISResultSetColumn.java
@@ -0,0 +1,55 @@
+/*
+ * 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.cmis.search;
+
+import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
+import org.alfresco.cmis.dictionary.CMISPropertyType;
+
+/**
+ * The column meta data for a result set
+ *
+ * @author andyh
+ *
+ */
+public interface CMISResultSetColumn
+{
+ /**
+ * The column name
+ * @return - the column name
+ */
+ public String getName();
+
+ /**
+ * The property definition if there is one for the column
+ * @return - the property definition or null if it does not make sense for the column
+ */
+ public CMISPropertyDefinition getPropertyDefinition();
+
+ /**
+ * The type of the column
+ * @return - the CMIS type for the column
+ */
+ public CMISPropertyType getPropertyType();
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSetMetaData.java b/source/java/org/alfresco/cmis/search/CMISResultSetMetaData.java
new file mode 100644
index 0000000000..babf220bd6
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISResultSetMetaData.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.cmis.search;
+
+/**
+ * The meta data associated with a result set
+ *
+ * @author andyh
+ *
+ */
+public interface CMISResultSetMetaData
+{
+ /**
+ * The selector meta-data.
+ * @return - the selector meta-data.
+ */
+ public CMISResultSetSelector[] getSelectors();
+
+ /**
+ * The column meta-data.
+ * @return - the column meta-data.
+ */
+ public CMISResultSetColumn[] getColumns();
+
+ /**
+ * Get the query options used to create this result set
+ * @return the query options
+ */
+ public CMISQueryOptions getQueryOptions();
+
+ /**
+ * Get the names of the selectors.
+ * @return - the selector names.
+ */
+ public String[] getSelectorNames();
+
+ /**
+ * Get the column names.
+ * @return - the names of the columns.
+ */
+ public String[] getColumnNames();
+
+ /**
+ * Get the selector meta-data by name.
+ * @param name
+ * @return - the selector meta-data.
+ */
+ public CMISResultSetSelector getSelector(String name);
+
+ /**
+ * Get the column meta-data by column name.
+ * @param name
+ * @return - the column meta-data.
+ */
+ public CMISResultSetColumn getCoumn(String name);
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSetRow.java b/source/java/org/alfresco/cmis/search/CMISResultSetRow.java
new file mode 100644
index 0000000000..004417cd57
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISResultSetRow.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.cmis.search;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * A row in a CMISResultSet
+ *
+ * @author andyh
+ *
+ */
+public interface CMISResultSetRow
+{
+ /**
+ * Get all the column data.
+ * @return - a map of serializable column values with teh column name as the key
+ */
+ public Map getValues();
+
+ /**
+ * Get the data for a single column
+ * @param columnName
+ * @return the value
+ */
+ public Serializable getValue(String columnName);
+
+ /**
+ * Get the overall score.
+ *
+ * @return
+ */
+ public float getScore();
+
+ /**
+ * Get the scores .
+ * @return a map of selector name to score.
+ */
+ public Map getScores();
+
+ /**
+ * Get the score related to the names selector.
+ * @param selectorName
+ * @return - the score.
+ */
+ public float getScore(String selectorName);
+
+ /**
+ * Get the index of this result set in the result set
+ * If you want the overall position in paged reults you have to add the skipCount fo the result set.
+ * @return
+ */
+ public int getIndex();
+
+ /**
+ * Get the result set for which this row is a member.
+ * @return - the result set.
+ */
+ public CMISResultSet getResultSet();
+}
diff --git a/source/java/org/alfresco/cmis/search/CMISResultSetSelector.java b/source/java/org/alfresco/cmis/search/CMISResultSetSelector.java
new file mode 100644
index 0000000000..635fbe3ae7
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/CMISResultSetSelector.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.cmis.search;
+
+import org.alfresco.cmis.dictionary.CMISTypeDefinition;
+
+/**
+ * The meta-data for a result set selector.
+ *
+ * @author andyh
+ *
+ */
+public interface CMISResultSetSelector
+{
+ /**
+ * The name of the selector
+ * @return - the selector name
+ */
+ public String getName();
+
+ /**
+ * Get the type definition for the selector.
+ * @return - the CMIS type definition.
+ */
+ public CMISTypeDefinition getTypeDefinition();
+
+}
diff --git a/source/java/org/alfresco/cmis/search/FullTextSearchSupport.java b/source/java/org/alfresco/cmis/search/FullTextSearchSupport.java
new file mode 100644
index 0000000000..597df08996
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/FullTextSearchSupport.java
@@ -0,0 +1,34 @@
+/*
+ * 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.cmis.search;
+
+/**
+ * @author andyh
+ *
+ */
+public enum FullTextSearchSupport
+{
+ NO_FULL_TEXT, FULL_TEXT_ONLY, FULL_TEXT_AND_STRUCTURED;
+}
diff --git a/source/java/org/alfresco/cmis/search/JoinSupport.java b/source/java/org/alfresco/cmis/search/JoinSupport.java
new file mode 100644
index 0000000000..94e601e130
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/JoinSupport.java
@@ -0,0 +1,34 @@
+/*
+ * 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.cmis.search;
+
+/**
+ * @author andyh
+ *
+ */
+public enum JoinSupport
+{
+ NO_JOIN_SUPPORT, INNER_JOIN_SUPPORT, INNER_AND_OUTER_JOIN_SUPPORT;
+}
diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java
index 232805ca43..0708661cf3 100644
--- a/source/java/org/alfresco/cmis/search/QueryTest.java
+++ b/source/java/org/alfresco/cmis/search/QueryTest.java
@@ -24,1001 +24,46 @@
*/
package org.alfresco.cmis.search;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.alfresco.cmis.dictionary.BaseCMISTest;
-import org.alfresco.cmis.dictionary.CMISCardinality;
-import org.alfresco.cmis.dictionary.CMISMapping;
-import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
-import org.alfresco.cmis.dictionary.CMISScope;
-import org.alfresco.cmis.dictionary.CMISTypeId;
-import org.alfresco.repo.search.impl.parsers.CMISLexer;
-import org.alfresco.repo.search.impl.parsers.CMISParser;
-import org.alfresco.repo.search.impl.parsers.FTSLexer;
-import org.alfresco.repo.search.impl.parsers.FTSParser;
-import org.alfresco.repo.search.impl.querymodel.Argument;
-import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
-import org.alfresco.repo.search.impl.querymodel.Column;
-import org.alfresco.repo.search.impl.querymodel.Constraint;
-import org.alfresco.repo.search.impl.querymodel.Function;
-import org.alfresco.repo.search.impl.querymodel.JoinType;
-import org.alfresco.repo.search.impl.querymodel.Order;
-import org.alfresco.repo.search.impl.querymodel.Ordering;
-import org.alfresco.repo.search.impl.querymodel.Query;
-import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
-import org.alfresco.repo.search.impl.querymodel.Selector;
-import org.alfresco.repo.search.impl.querymodel.Source;
-import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Equals;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThan;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThanOrEquals;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.In;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThan;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThanOrEquals;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Like;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Lower;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.NotEquals;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.PropertyAccessor;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Score;
-import org.alfresco.repo.search.impl.querymodel.impl.functions.Upper;
-import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryModelFactory;
-import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.namespace.QName;
-import org.antlr.runtime.ANTLRStringStream;
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.RecognitionException;
-import org.antlr.runtime.tree.CommonTree;
/**
* @author andyh
*/
public class QueryTest extends BaseCMISTest
{
- public void testParse()
+ public void testBasicSelect()
{
- String input = "SELECT UPPER(1.0) AS WOOF FROM DOCUMENT_OBJECT_TYPE AS DOC LEFT OUTER JOIN FOLDER_OBJECT_TYPE AS FOLDER ON (DOC.NAME = FOLDER.NAME) WHERE CONTAINS('DOC.NAME:lemur AND woof') AND (DOC.NAME in ('one', 'two') AND IN_FOLDER('meep') AND DOC.NAME like 'woof' and DOC.NAME = 'woof' and DOC.OBJECT_ID = 'meep') ORDER BY DOC.NAME DESC, WOOF";
- CMISParser parser = null;
- try
- {
- CharStream cs = new ANTLRStringStream(input);
- CMISLexer lexer = new CMISLexer(cs);
- CommonTokenStream tokens = new CommonTokenStream(lexer);
- parser = new CMISParser(tokens);
- CommonTree queryNode = (CommonTree) parser.query().getTree();
- assertTrue(queryNode.getType() == CMISParser.QUERY);
-
- QueryModelFactory factory = new LuceneQueryModelFactory();
-
- CommonTree sourceNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.SOURCE);
- Source source = buildSource(sourceNode, true, factory);
- Map selectors = source.getSelectors();
- ArrayList columns = buildColumns(queryNode, factory, selectors);
-
- ArrayList orderings = buildOrderings(queryNode, factory, selectors, columns);
-
- Constraint constraint = null;
- CommonTree orNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.DISJUNCTION);
- if (orNode != null)
- {
- constraint = buildDisjunction(orNode, factory, selectors, columns);
- }
-
- System.out.println(source);
- System.out.println(selectors);
- System.out.println(columns);
- System.out.println(orderings);
- System.out.println(constraint);
-
- Query query = factory.createQuery(columns, source, constraint, orderings);
- System.out.println(query);
- }
- catch (RecognitionException e)
- {
- if (parser != null)
- {
- String[] tokenNames = parser.getTokenNames();
- String hdr = parser.getErrorHeader(e);
- String msg = parser.getErrorMessage(e, tokenNames);
- throw new CMISQueryException(hdr + "\n" + msg, e);
- }
- }
-
+ String query = "SELECT * FROM DOCUMENT_OBJECT_TYPE";
+ cmisQueryService.query(query);
}
-
- /**
- * @param queryNode
- * @param factory
- * @param selectors
- * @param columns
- * @return
- */
- private Constraint buildDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+
+ public void xtestParse1()
{
- List constraints = new ArrayList(orNode.getChildCount());
- for (int i = 0; i < orNode.getChildCount(); i++)
- {
- CommonTree andNode = (CommonTree) orNode.getChild(i);
- Constraint constraint = buildConjunction(andNode, factory, selectors, columns);
- constraints.add(constraint);
- }
- if (constraints.size() == 1)
- {
- return constraints.get(0);
- }
- else
- {
- return factory.createDisjunction(constraints);
- }
+ String query = "SELECT UPPER(1.0) AS WOOF FROM DOCUMENT_OBJECT_TYPE AS DOC LEFT OUTER JOIN FOLDER_OBJECT_TYPE AS FOLDER ON (DOC.NAME = FOLDER.NAME) WHERE LOWER(DOC.NAME = ' woof' AND CONTAINS(, 'one two three') AND CONTAINS(, 'DOC.NAME:lemur AND woof') AND (DOC.NAME in ('one', 'two') AND IN_FOLDER('meep') AND DOC.NAME like 'woof' and DOC.NAME = 'woof' and DOC.OBJECT_ID = 'meep') ORDER BY DOC.NAME DESC, WOOF";
+ cmisQueryService.query(query);
}
-
- /**
- * @param andNode
- * @param factory
- * @param selectors
- * @param columns
- * @return
- */
- private Constraint buildConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+
+ public void xtestParse2()
{
- List constraints = new ArrayList(andNode.getChildCount());
- for (int i = 0; i < andNode.getChildCount(); i++)
- {
- CommonTree notNode = (CommonTree) andNode.getChild(i);
- Constraint constraint = buildNegation(notNode, factory, selectors, columns);
- constraints.add(constraint);
- }
- if (constraints.size() == 1)
- {
- return constraints.get(0);
- }
- else
- {
- return factory.createConjunction(constraints);
- }
+ String query = "SELECT TITLE, AUTHORS, DATE FROM WHITE_PAPER WHERE ( IN_TREE( , 'ID00093854763') ) AND ( 'SMITH' = ANY AUTHORS )";
+ cmisQueryService.query(query);
}
-
- /**
- * @param notNode
- * @param factory
- * @param selectors
- * @param columns
- * @return
- */
- private Constraint buildNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+
+ public void xtestParse3()
{
- if (notNode.getType() == CMISParser.NEGATION)
- {
- Constraint constraint = buildTest(notNode, factory, selectors, columns);
- return factory.createNegation(constraint);
- }
- else
- {
- return buildTest(notNode, factory, selectors, columns);
- }
+ String query = "SELECT OBJECT_ID, SCORE() AS X, DESTINATION, DEPARTURE_DATES FROM TRAVEL_BROCHURE WHERE ( CONTAINS(, 'CARIBBEAN CENTRAL AMERICA CRUISE TOUR') ) AND ( '2009-1-1' < ANY DEPARTURE_DATES ) ORDER BY X DESC";
+ cmisQueryService.query(query);
}
-
- /**
- * @param notNode
- * @param factory
- * @param selectors
- * @param columns
- * @return
- */
- private Constraint buildTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+
+ public void xtestParse4()
{
- if (testNode.getType() == CMISParser.DISJUNCTION)
- {
- return buildDisjunction(testNode, factory, selectors, columns);
- }
- else
- {
- return buildPredicate(testNode, factory, selectors, columns);
- }
+ String query = "SELECT * FROM CAR_REVIEW WHERE ( LOWER(MAKE) = 'buick' ) OR ( ANY FEATURES IN ('NAVIGATION SYSTEM', 'SATELLITE RADIO', 'MP3' ) )";
+ cmisQueryService.query(query);
}
-
- /**
- * @param orNode
- * @param factory
- * @param selectors
- * @param columns
- * @return
- */
- private Constraint buildPredicate(CommonTree predicateNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+
+ public void xtestParse5()
{
- String functionName;
- Function function;
- CommonTree argNode;
- List functionArguments;
- Argument arg;
- switch (predicateNode.getType())
- {
- case CMISParser.PRED_CHILD:
- functionName = Child.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- argNode = (CommonTree) predicateNode.getChild(0);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
- functionArguments.add(arg);
- if (predicateNode.getChildCount() > 1)
- {
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
- functionArguments.add(arg);
- }
- return factory.createFunctionalConstraint(function, functionArguments);
- case CMISParser.PRED_COMPARISON:
- switch (predicateNode.getChild(2).getType())
- {
- case CMISParser.EQUALS:
- functionName = Equals.NAME;
- function = factory.getFunction(functionName);
- break;
- case CMISParser.NOTEQUALS:
- functionName = NotEquals.NAME;
- function = factory.getFunction(functionName);
- break;
- case CMISParser.GREATERTHAN:
- functionName = GreaterThan.NAME;
- function = factory.getFunction(functionName);
- break;
- case CMISParser.GREATERTHANOREQUALS:
- functionName = GreaterThanOrEquals.NAME;
- function = factory.getFunction(functionName);
- break;
- case CMISParser.LESSTHAN:
- functionName = LessThan.NAME;
- function = factory.getFunction(functionName);
- break;
- case CMISParser.LESSTHANOREQUALS:
- functionName = LessThanOrEquals.NAME;
- function = factory.getFunction(functionName);
- break;
- default:
- throw new CMISQueryException("Unknown comparison function " + predicateNode.getChild(2).getText());
- }
- functionArguments = new ArrayList();
- argNode = (CommonTree) predicateNode.getChild(1);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_LHS), factory, selectors);
- functionArguments.add(arg);
- argNode = (CommonTree) predicateNode.getChild(3);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_RHS), factory, selectors);
- functionArguments.add(arg);
- return factory.createFunctionalConstraint(function, functionArguments);
- case CMISParser.PRED_DESCENDANT:
- functionName = Descendant.NAME;
- function = factory.getFunction(functionName);
- argNode = (CommonTree) predicateNode.getChild(0);
- functionArguments = new ArrayList();
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
- functionArguments.add(arg);
- if (predicateNode.getChildCount() > 1)
- {
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
- functionArguments.add(arg);
- }
- return factory.createFunctionalConstraint(function, functionArguments);
- case CMISParser.PRED_EXISTS:
- functionName = Exists.NAME;
- function = factory.getFunction(functionName);
- argNode = (CommonTree) predicateNode.getChild(0);
- functionArguments = new ArrayList();
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Exists.ARG_PROPERTY), factory, selectors);
- functionArguments.add(arg);
- arg = factory.createLiteralArgument(Exists.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() == 1));
- functionArguments.add(arg);
- return factory.createFunctionalConstraint(function, functionArguments);
- case CMISParser.PRED_FTS:
- String ftsExpression = predicateNode.getChild(0).getText();
- return buildFTS(ftsExpression, factory, selectors, columns);
- case CMISParser.PRED_IN:
- functionName = In.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- argNode = (CommonTree) predicateNode.getChild(0);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_PROPERTY), factory, selectors);
- functionArguments.add(arg);
- argNode = (CommonTree) predicateNode.getChild(1);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_COLLECTION), factory, selectors);
- functionArguments.add(arg);
- arg = factory.createLiteralArgument(In.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
- functionArguments.add(arg);
- return factory.createFunctionalConstraint(function, functionArguments);
- case CMISParser.PRED_LIKE:
- functionName = Like.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- argNode = (CommonTree) predicateNode.getChild(0);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_PROPERTY), factory, selectors);
- functionArguments.add(arg);
- argNode = (CommonTree) predicateNode.getChild(1);
- arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_EXP), factory, selectors);
- functionArguments.add(arg);
- arg = factory.createLiteralArgument(Like.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
- functionArguments.add(arg);
- return factory.createFunctionalConstraint(function, functionArguments);
- default:
- return null;
- }
- }
-
- private Constraint buildFTS(String ftsExpression, QueryModelFactory factory, Map selectors, ArrayList columns)
- {
- // TODO: transform '' to ' to reverse encoding
- FTSParser parser = null;
- try
- {
- CharStream cs = new ANTLRStringStream(ftsExpression);
- FTSLexer lexer = new FTSLexer(cs);
- CommonTokenStream tokens = new CommonTokenStream(lexer);
- parser = new FTSParser(tokens);
- CommonTree ftsNode = (CommonTree) parser.fts().getTree();
- if (ftsNode.getType() == FTSParser.CONJUNCTION)
- {
- return buildFTSConjunction(ftsNode, factory, selectors, columns);
- }
- else
- {
- return buildFTSDisjunction(ftsNode, factory, selectors, columns);
- }
- }
- catch (RecognitionException e)
- {
- if (parser != null)
- {
- String[] tokenNames = parser.getTokenNames();
- String hdr = parser.getErrorHeader(e);
- String msg = parser.getErrorMessage(e, tokenNames);
- throw new CMISQueryException(hdr + "\n" + msg, e);
- }
- return null;
- }
-
- }
-
- private Constraint buildFTSDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
- {
- List constraints = new ArrayList(orNode.getChildCount());
- for (int i = 0; i < orNode.getChildCount(); i++)
- {
- CommonTree andNode = (CommonTree) orNode.getChild(i);
- Constraint constraint = buildFTSConjunction(andNode, factory, selectors, columns);
- constraints.add(constraint);
- }
- if (constraints.size() == 1)
- {
- return constraints.get(0);
- }
- else
- {
- return factory.createDisjunction(constraints);
- }
- }
-
- private Constraint buildFTSConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
- {
- List constraints = new ArrayList(andNode.getChildCount());
- for (int i = 0; i < andNode.getChildCount(); i++)
- {
- CommonTree notNode = (CommonTree) andNode.getChild(i);
- Constraint constraint = buildFTSNegation(notNode, factory, selectors, columns);
- constraints.add(constraint);
- }
- if (constraints.size() == 1)
- {
- return constraints.get(0);
- }
- else
- {
- return factory.createConjunction(constraints);
- }
- }
-
- private Constraint buildFTSNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
- {
- if (notNode.getType() == FTSParser.NEGATION)
- {
- Constraint constraint = buildFTSTest(notNode, factory, selectors, columns);
- return factory.createNegation(constraint);
- }
- else
- {
- return buildFTSTest(notNode, factory, selectors, columns);
- }
- }
-
- private Constraint buildFTSTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
- {
- String term;
- String phrase;
- String functionName;
- Function function;
- List functionArguments;
- Argument arg;
- switch (testNode.getType())
- {
- case FTSParser.DISJUNCTION:
- return buildFTSDisjunction(testNode, factory, selectors, columns);
- case FTSParser.CONJUNCTION:
- return buildFTSConjunction(testNode, factory, selectors, columns);
- case FTSParser.TERM:
- functionName = FTSTerm.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- arg = factory.createLiteralArgument(FTSTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
- functionArguments.add(arg);
- if(testNode.getChildCount() > 1)
- {
- arg = buildColumnReference(FTSTerm.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
- functionArguments.add(arg);
- }
- return factory.createFunctionalConstraint(function, functionArguments);
- case FTSParser.EXACT_TERM:
- functionName = FTSExactTerm.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- arg = factory.createLiteralArgument(FTSExactTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
- functionArguments.add(arg);
- if(testNode.getChildCount() > 1)
- {
- arg = buildColumnReference(FTSExactTerm.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
- functionArguments.add(arg);
- }
- return factory.createFunctionalConstraint(function, functionArguments);
- case FTSParser.PHRASE:
- // TODO: transform "" to " to reverse escaping
- functionName = FTSPhrase.NAME;
- function = factory.getFunction(functionName);
- functionArguments = new ArrayList();
- arg = factory.createLiteralArgument(FTSPhrase.ARG_PHRASE, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
- functionArguments.add(arg);
- if(testNode.getChildCount() > 1)
- {
- arg = buildColumnReference(FTSPhrase.ARG_PROPERTY, (CommonTree)testNode.getChild(1), factory);
- functionArguments.add(arg);
- }
- return factory.createFunctionalConstraint(function, functionArguments);
- case FTSParser.SYNONYM:
- case FTSParser.FG_PROXIMITY:
- case FTSParser.FG_RANGE:
- case FTSParser.FIELD_GROUP:
- case FTSParser.FIELD_CONJUNCTION:
- case FTSParser.FIELD_DISJUNCTION:
- default:
- throw new CMISQueryException("Unsupported FTS option "+testNode.getText());
- }
- }
-
- /**
- * @param queryNode
- * @param factory
- * @param selectors
- * @return
- */
- private ArrayList buildOrderings(CommonTree queryNode, QueryModelFactory factory, Map selectors, List columns)
- {
- ArrayList orderings = new ArrayList();
- CommonTree orderNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ORDER);
- if (orderNode != null)
- {
- for (int i = 0; i < orderNode.getChildCount(); i++)
- {
- CommonTree current = (CommonTree) orderNode.getChild(i);
-
- CommonTree columnRefNode = (CommonTree) current.getFirstChildWithType(CMISParser.COLUMN_REF);
- if (columnRefNode != null)
- {
- String columnName = columnRefNode.getChild(0).getText();
- String qualifier = "";
- if (columnRefNode.getChildCount() > 1)
- {
- qualifier = columnRefNode.getChild(1).getText();
- }
-
- Order order = Order.ASCENDING;
-
- if (current.getChild(1).getType() == CMISParser.DESC)
- {
- order = Order.DESCENDING;
- }
-
- Column orderColumn = null;
-
- if (qualifier.length() == 0)
- {
- Column match = null;
- for (Column column : columns)
- {
- if (column.getAlias().equals(columnName))
- {
- match = column;
- break;
- }
- }
- if (match == null)
- {
-
- Selector selector = selectors.get(qualifier);
- if (selector == null)
- {
- throw new CMISQueryException("No selector for " + qualifier);
- }
- QName cmisType = CMISMapping.getCmisType(selector.getType());
- CMISTypeId typeId = null;
- if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
- }
- else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
- }
- else
- {
- throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
- }
- CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
-
- if (definition == null)
- {
- throw new CMISQueryException("Invalid column for " + CMISMapping.getQueryName(namespaceService, typeId.getQName()) + "." + columnName);
- }
-
- Function function = factory.getFunction(PropertyAccessor.NAME);
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
- Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
- List functionArguments = new ArrayList(1);
- functionArguments.add(arg);
-
- String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
-
- match = factory.createColumn(function, functionArguments, alias);
- }
- orderColumn = match;
- }
- else
- {
- Selector selector = selectors.get(qualifier);
- if (selector == null)
- {
- throw new CMISQueryException("No selector for " + qualifier);
- }
- QName cmisType = CMISMapping.getCmisType(selector.getType());
- CMISTypeId typeId = null;
- if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
- }
- else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
- }
- else
- {
- throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
- }
- CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
-
- if (definition == null)
- {
- throw new CMISQueryException("Invalid column for "
- + CMISMapping.getQueryName(namespaceService, typeId.getQName()) + "." + columnName + " selector alias " + selector.getAlias());
- }
-
- Function function = factory.getFunction(PropertyAccessor.NAME);
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
- Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
- List functionArguments = new ArrayList(1);
- functionArguments.add(arg);
-
- String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
-
- orderColumn = factory.createColumn(function, functionArguments, alias);
- }
-
- // TODO: check orderable - add to the column definition
-
- Ordering ordering = factory.createOrdering(orderColumn, order);
- orderings.add(ordering);
-
- }
- }
- }
- return orderings;
- }
-
- private ArrayList buildColumns(CommonTree queryNode, QueryModelFactory factory, Map selectors)
- {
- ArrayList columns = new ArrayList();
- CommonTree starNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ALL_COLUMNS);
- if (starNode != null)
- {
- for (Selector selector : selectors.values())
- {
- QName cmisType = CMISMapping.getCmisType(selector.getType());
- CMISTypeId typeId = null;
- if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
- }
- else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
- }
- else
- {
- throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
- }
- Map propDefs = cmisDictionaryService.getPropertyDefinitions(typeId);
- for (CMISPropertyDefinition definition : propDefs.values())
- {
- if (definition.getCardinality() == CMISCardinality.SINGLE_VALUED)
- {
- Function function = factory.getFunction(PropertyAccessor.NAME);
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
- Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
- List functionArguments = new ArrayList(1);
- functionArguments.add(arg);
- Column column = factory.createColumn(function, functionArguments, selector.getAlias() + "." + definition.getPropertyName());
- columns.add(column);
- }
- }
- }
- }
-
- CommonTree columnsNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.COLUMNS);
- if (columnsNode != null)
- {
- CommonTree allColumnsNode = (CommonTree) columnsNode.getFirstChildWithType(CMISParser.ALL_COLUMNS);
- if (allColumnsNode != null)
- {
- String qualifier = allColumnsNode.getChild(0).getText();
- Selector selector = selectors.get(qualifier);
- if (selector == null)
- {
- throw new CMISQueryException("No selector for " + qualifier + " in " + qualifier + ".*");
- }
- QName cmisType = CMISMapping.getCmisType(selector.getType());
- CMISTypeId typeId = null;
- if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
- }
- else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
- }
- else
- {
- throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
- }
- Map propDefs = cmisDictionaryService.getPropertyDefinitions(typeId);
- for (CMISPropertyDefinition definition : propDefs.values())
- {
- if (definition.getCardinality() == CMISCardinality.SINGLE_VALUED)
- {
- Function function = factory.getFunction(PropertyAccessor.NAME);
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
- Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
- List functionArguments = new ArrayList(1);
- functionArguments.add(arg);
- Column column = factory.createColumn(function, functionArguments, selector.getAlias() + "." + definition.getPropertyName());
- columns.add(column);
- }
- }
- }
-
- CommonTree columnNode = (CommonTree) columnsNode.getFirstChildWithType(CMISParser.COLUMN);
- if (columnNode != null)
- {
- CommonTree columnRefNode = (CommonTree) columnNode.getFirstChildWithType(CMISParser.COLUMN_REF);
- if (columnRefNode != null)
- {
- String columnName = columnRefNode.getChild(0).getText();
- String qualifier = "";
- if (columnRefNode.getChildCount() > 1)
- {
- qualifier = columnRefNode.getChild(1).getText();
- }
- Selector selector = selectors.get(qualifier);
- if (selector == null)
- {
- throw new CMISQueryException("No selector for " + qualifier);
- }
- QName cmisType = CMISMapping.getCmisType(selector.getType());
- CMISTypeId typeId = null;
- if (CMISMapping.isValidCmisDocument(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
- }
- else if (CMISMapping.isValidCmisFolder(dictionaryService, cmisType))
- {
- typeId = CMISMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
- }
- else
- {
- throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
- }
- CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
-
- if (definition == null)
- {
- throw new CMISQueryException("Invalid column for " + CMISMapping.getQueryName(namespaceService, typeId.getQName()) + "." + columnName);
- }
-
- Function function = factory.getFunction(PropertyAccessor.NAME);
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), definition.getPropertyName());
- Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
- List functionArguments = new ArrayList(1);
- functionArguments.add(arg);
-
- String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
- if (columnNode.getChildCount() > 1)
- {
- alias = columnNode.getChild(1).getText();
- }
-
- Column column = factory.createColumn(function, functionArguments, alias);
- columns.add(column);
-
- }
-
- CommonTree functionNode = (CommonTree) columnNode.getFirstChildWithType(CMISParser.FUNCTION);
- if (functionNode != null)
- {
- String functionName = getFunctionName((CommonTree) functionNode.getChild(0));
- Function function = factory.getFunction(functionName);
- Set definitions = function.getArgumentDefinitions();
- List functionArguments = new ArrayList();
-
- int childIndex = 1;
- for (ArgumentDefinition definition : definitions)
- {
- if (functionNode.getChildCount() > childIndex)
- {
- CommonTree argNode = (CommonTree) functionNode.getChild(childIndex++);
- Argument arg = getFunctionArgument(argNode, definition, factory, selectors);
- functionArguments.add(arg);
- }
- else
- {
- if (definition.isMandatory())
- {
- // throw new CMISQueryException("Insufficient aruments for function " + ((CommonTree)
- // functionNode.getChild(0)).getText() );
- break;
- }
- else
- {
- // ok
- }
- }
- }
-
- String alias = function.getName();
- if (columnNode.getChildCount() > 1)
- {
- alias = columnNode.getChild(1).getText();
- }
-
- Column column = factory.createColumn(function, functionArguments, alias);
- columns.add(column);
- }
-
- }
- }
-
- return columns;
- }
-
- private Argument getFunctionArgument(CommonTree argNode, ArgumentDefinition definition, QueryModelFactory factory, Map selectors)
- {
- if (argNode.getType() == CMISParser.COLUMN_REF)
- {
- Argument arg = buildColumnReference(definition.getName(), argNode, factory);
- return arg;
- }
- else if (argNode.getType() == CMISParser.ID)
- {
- Argument arg;
- String id = argNode.getText();
- if (selectors.containsKey(id))
- {
- arg = factory.createSelectorArgument(definition.getName(), id);
- }
- else
- {
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), id);
- arg = factory.createPropertyArgument(definition.getName(), "", propertyQName);
- }
- return arg;
- }
- else if (argNode.getType() == CMISParser.PARAMETER)
- {
- Argument arg = factory.createParameterArgument(definition.getName(), argNode.getText());
- return arg;
- }
- else if (argNode.getType() == CMISParser.NUMERIC_LITERAL)
- {
- CommonTree literalNode = (CommonTree) argNode.getChild(0);
- if (literalNode.getType() == CMISParser.FLOATING_POINT_LITERAL)
- {
- QName type = DataTypeDefinition.DOUBLE;
- Number value = Double.parseDouble(literalNode.getText());
- if (value.floatValue() == value.doubleValue())
- {
- type = DataTypeDefinition.FLOAT;
- value = Float.valueOf(value.floatValue());
- }
- Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
- return arg;
- }
- else if (literalNode.getType() == CMISParser.DECIMAL_INTEGER_LITERAL)
- {
- QName type = DataTypeDefinition.LONG;
- Number value = Long.parseLong(literalNode.getText());
- if (value.intValue() == value.longValue())
- {
- type = DataTypeDefinition.INT;
- value = Integer.valueOf(value.intValue());
- }
- Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
- return arg;
- }
- else
- {
- throw new CMISQueryException("Invalid numeric literal " + literalNode.getText());
- }
- }
- else if (argNode.getType() == CMISParser.STRING_LITERAL)
- {
- Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getChild(0).getText());
- return arg;
- }
- else if (argNode.getType() == CMISParser.LIST)
- {
- ArrayList arguments = new ArrayList();
- for (int i = 0; i < argNode.getChildCount(); i++)
- {
- CommonTree arg = (CommonTree) argNode.getChild(i);
- arguments.add(getFunctionArgument(arg, definition, factory, selectors));
- }
- Argument arg = factory.createListArgument(definition.getName(), arguments);
- return arg;
- }
- else if (argNode.getType() == CMISParser.ANY)
- {
- Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
- return arg;
- }
- else if (argNode.getType() == CMISParser.NOT)
- {
- Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
- return arg;
- }
- else
- {
- throw new CMISQueryException("Invalid query argument " + argNode.getText());
- }
- }
-
- @SuppressWarnings("unchecked")
- private Source buildSource(CommonTree source, boolean supportJoins, QueryModelFactory factory)
- {
- if (source.getChildCount() == 1)
- {
- // single table reference
- CommonTree singleTableNode = (CommonTree) source.getChild(0);
- if (singleTableNode.getType() == CMISParser.TABLE)
- {
- if (!supportJoins)
- {
- throw new UnsupportedOperationException("Joins are not supported");
- }
- CommonTree tableSourceNode = (CommonTree) singleTableNode.getFirstChildWithType(CMISParser.SOURCE);
- return buildSource(tableSourceNode, false, factory);
-
- }
- assertTrue(singleTableNode.getType() == CMISParser.TABLE_REF);
- String tableName = singleTableNode.getChild(0).getText();
- String alias = "";
- if (singleTableNode.getChildCount() > 1)
- {
- alias = singleTableNode.getChild(1).getText();
- }
- QName classQName = CMISMapping.getAlfrescoClassQNameFromCmisTableName(dictionaryService, serviceRegistry.getNamespaceService(), tableName);
- return factory.createSelector(classQName, alias);
- }
- else
- {
- if (!supportJoins)
- {
- throw new UnsupportedOperationException("Joins are not supported");
- }
- CommonTree singleTableNode = (CommonTree) source.getChild(0);
- assertTrue(singleTableNode.getType() == CMISParser.TABLE_REF);
- String tableName = singleTableNode.getChild(0).getText();
- String alias = "";
- if (singleTableNode.getChildCount() == 2)
- {
- alias = singleTableNode.getChild(1).getText();
- }
- QName classQName = CMISMapping.getAlfrescoClassQNameFromCmisTableName(dictionaryService, serviceRegistry.getNamespaceService(), tableName);
- Source lhs = factory.createSelector(classQName, alias);
-
- List list = (List) (source.getChildren());
- for (CommonTree joinNode : list)
- {
- if (joinNode.getType() == CMISParser.JOIN)
- {
- CommonTree rhsSource = (CommonTree) joinNode.getFirstChildWithType(CMISParser.SOURCE);
- Source rhs = buildSource(rhsSource, supportJoins, factory);
-
- JoinType joinType = JoinType.INNER;
- CommonTree joinTypeNode = (CommonTree) joinNode.getFirstChildWithType(CMISParser.LEFT);
- if (joinTypeNode != null)
- {
- joinType = JoinType.LEFT;
- }
-
- Constraint joinCondition = null;
- CommonTree joinConditionNode = (CommonTree) joinNode.getFirstChildWithType(CMISParser.ON);
- if (joinConditionNode != null)
- {
- Argument arg1 = buildColumnReference(Equals.ARG_LHS, (CommonTree) joinConditionNode.getChild(0), factory);
- String functionName = getFunctionName((CommonTree) joinConditionNode.getChild(1));
- Argument arg2 = buildColumnReference(Equals.ARG_RHS, (CommonTree) joinConditionNode.getChild(2), factory);
- Function function = factory.getFunction(functionName);
- List functionArguments = new ArrayList(2);
- functionArguments.add(arg1);
- functionArguments.add(arg2);
- joinCondition = factory.createFunctionalConstraint(function, functionArguments);
- }
-
- Source join = factory.createJoin(lhs, rhs, joinType, joinCondition);
- lhs = join;
- }
- }
-
- return lhs;
-
- }
- }
-
- public Argument buildColumnReference(String argumentName, CommonTree columnReferenceNode, QueryModelFactory factory)
- {
- String cmisPropertyName = columnReferenceNode.getChild(0).getText();
- String qualifer = "";
- if (columnReferenceNode.getChildCount() > 1)
- {
- qualifer = columnReferenceNode.getChild(1).getText();
- }
- QName propertyQName = CMISMapping.getPropertyQName(dictionaryService, serviceRegistry.getNamespaceService(), cmisPropertyName);
- return factory.createPropertyArgument(argumentName, qualifer, propertyQName);
- }
-
- public String getFunctionName(CommonTree functionNameNode)
- {
- switch (functionNameNode.getType())
- {
- case CMISParser.EQUALS:
- return Equals.NAME;
- case CMISParser.UPPER:
- return Upper.NAME;
- case CMISParser.SCORE:
- return Score.NAME;
- case CMISParser.LOWER:
- return Lower.NAME;
- default:
- throw new CMISQueryException("Unknown function: " + functionNameNode.getText());
- }
+ String query = "SELECT Y.CLAIM_NUM, X.PROPERTY_ADDRESS, Y.DAMAGE_ESTIMATES FROM POLICY AS X JOIN CLAIMS AS Y ON ( X.POLICY_NUM = Y.POLICY_NUM ) WHERE ( 100000 <= ANY Y.DAMAGE_ESTIMATES ) AND ( Y.CAUSE NOT LIKE '%Katrina%' )";
+ cmisQueryService.query(query);
}
}
diff --git a/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java b/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java
new file mode 100644
index 0000000000..a320a81d47
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/impl/CMISQueryParser.java
@@ -0,0 +1,1078 @@
+/*
+ * 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.cmis.search.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.alfresco.cmis.dictionary.CMISCardinality;
+import org.alfresco.cmis.dictionary.CMISDictionaryService;
+import org.alfresco.cmis.dictionary.CMISMapping;
+import org.alfresco.cmis.dictionary.CMISPropertyDefinition;
+import org.alfresco.cmis.dictionary.CMISScope;
+import org.alfresco.cmis.dictionary.CMISTypeId;
+import org.alfresco.cmis.search.CMISQueryException;
+import org.alfresco.cmis.search.CMISQueryOptions;
+import org.alfresco.cmis.search.JoinSupport;
+import org.alfresco.repo.search.impl.parsers.CMISLexer;
+import org.alfresco.repo.search.impl.parsers.CMISParser;
+import org.alfresco.repo.search.impl.parsers.FTSLexer;
+import org.alfresco.repo.search.impl.parsers.FTSParser;
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition;
+import org.alfresco.repo.search.impl.querymodel.Column;
+import org.alfresco.repo.search.impl.querymodel.Constraint;
+import org.alfresco.repo.search.impl.querymodel.Function;
+import org.alfresco.repo.search.impl.querymodel.JoinType;
+import org.alfresco.repo.search.impl.querymodel.Order;
+import org.alfresco.repo.search.impl.querymodel.Ordering;
+import org.alfresco.repo.search.impl.querymodel.Query;
+import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
+import org.alfresco.repo.search.impl.querymodel.Selector;
+import org.alfresco.repo.search.impl.querymodel.Source;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Equals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Exists;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.GreaterThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.In;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThan;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.LessThanOrEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Like;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Lower;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.NotEquals;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.PropertyAccessor;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Score;
+import org.alfresco.repo.search.impl.querymodel.impl.functions.Upper;
+import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryModelFactory;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
+import org.alfresco.service.namespace.QName;
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.tree.CommonTree;
+
+/**
+ * @author andyh
+ */
+public class CMISQueryParser
+{
+ private CMISQueryOptions options;
+
+ private CMISDictionaryService cmisDictionaryService;
+
+ private CMISMapping cmisMapping;
+
+ private JoinSupport joinSupport;
+
+ public CMISQueryParser(CMISQueryOptions options, CMISDictionaryService cmisDictionaryService, CMISMapping cmisMapping, JoinSupport joinSupport)
+ {
+ this.options = options;
+ this.cmisDictionaryService = cmisDictionaryService;
+ this.cmisMapping = cmisMapping;
+ this.joinSupport = joinSupport;
+ }
+
+ public Query parse()
+ {
+ CMISParser parser = null;
+ try
+ {
+ CharStream cs = new ANTLRStringStream(options.getQuery());
+ CMISLexer lexer = new CMISLexer(cs);
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ parser = new CMISParser(tokens);
+ CommonTree queryNode = (CommonTree) parser.query().getTree();
+
+ QueryModelFactory factory = new LuceneQueryModelFactory();
+
+ CommonTree sourceNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.SOURCE);
+ Source source = buildSource(sourceNode, joinSupport, factory);
+ Map selectors = source.getSelectors();
+ ArrayList columns = buildColumns(queryNode, factory, selectors);
+
+ ArrayList orderings = buildOrderings(queryNode, factory, selectors, columns);
+
+ Constraint constraint = null;
+ CommonTree orNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.DISJUNCTION);
+ if (orNode != null)
+ {
+ constraint = buildDisjunction(orNode, factory, selectors, columns);
+ }
+
+ Query query = factory.createQuery(columns, source, constraint, orderings);
+
+ return query;
+ }
+ catch (RecognitionException e)
+ {
+ if (parser != null)
+ {
+ String[] tokenNames = parser.getTokenNames();
+ String hdr = parser.getErrorHeader(e);
+ String msg = parser.getErrorMessage(e, tokenNames);
+ throw new CMISQueryException(hdr + "\n" + msg, e);
+ }
+ }
+ throw new CMISQueryException("Failed to parse");
+ }
+
+ /**
+ * @param queryNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(orNode.getChildCount());
+ for (int i = 0; i < orNode.getChildCount(); i++)
+ {
+ CommonTree andNode = (CommonTree) orNode.getChild(i);
+ Constraint constraint = buildConjunction(andNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createDisjunction(constraints);
+ }
+ }
+
+ /**
+ * @param andNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(andNode.getChildCount());
+ for (int i = 0; i < andNode.getChildCount(); i++)
+ {
+ CommonTree notNode = (CommonTree) andNode.getChild(i);
+ Constraint constraint = buildNegation(notNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createConjunction(constraints);
+ }
+ }
+
+ /**
+ * @param notNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (notNode.getType() == CMISParser.NEGATION)
+ {
+ Constraint constraint = buildTest(notNode, factory, selectors, columns);
+ return factory.createNegation(constraint);
+ }
+ else
+ {
+ return buildTest(notNode, factory, selectors, columns);
+ }
+ }
+
+ /**
+ * @param notNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (testNode.getType() == CMISParser.DISJUNCTION)
+ {
+ return buildDisjunction(testNode, factory, selectors, columns);
+ }
+ else
+ {
+ return buildPredicate(testNode, factory, selectors, columns);
+ }
+ }
+
+ /**
+ * @param orNode
+ * @param factory
+ * @param selectors
+ * @param columns
+ * @return
+ */
+ private Constraint buildPredicate(CommonTree predicateNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ String functionName;
+ Function function;
+ CommonTree argNode;
+ List functionArguments;
+ Argument arg;
+ switch (predicateNode.getType())
+ {
+ case CMISParser.PRED_CHILD:
+ functionName = Child.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
+ functionArguments.add(arg);
+ if (predicateNode.getChildCount() > 1)
+ {
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_COMPARISON:
+ switch (predicateNode.getChild(2).getType())
+ {
+ case CMISParser.EQUALS:
+ functionName = Equals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.NOTEQUALS:
+ functionName = NotEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.GREATERTHAN:
+ functionName = GreaterThan.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.GREATERTHANOREQUALS:
+ functionName = GreaterThanOrEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.LESSTHAN:
+ functionName = LessThan.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ case CMISParser.LESSTHANOREQUALS:
+ functionName = LessThanOrEquals.NAME;
+ function = factory.getFunction(functionName);
+ break;
+ default:
+ throw new CMISQueryException("Unknown comparison function " + predicateNode.getChild(2).getText());
+ }
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_LHS), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(3);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(BaseComparison.ARG_RHS), factory, selectors);
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_DESCENDANT:
+ functionName = Descendant.NAME;
+ function = factory.getFunction(functionName);
+ argNode = (CommonTree) predicateNode.getChild(0);
+ functionArguments = new ArrayList();
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_PARENT), factory, selectors);
+ functionArguments.add(arg);
+ if (predicateNode.getChildCount() > 1)
+ {
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Child.ARG_SELECTOR), factory, selectors);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_EXISTS:
+ functionName = Exists.NAME;
+ function = factory.getFunction(functionName);
+ argNode = (CommonTree) predicateNode.getChild(0);
+ functionArguments = new ArrayList();
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Exists.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(Exists.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() == 1));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_FTS:
+ String ftsExpression = predicateNode.getChild(0).getText();
+ return buildFTS(ftsExpression, factory, selectors, columns);
+ case CMISParser.PRED_IN:
+ functionName = In.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(In.ARG_COLLECTION), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(In.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case CMISParser.PRED_LIKE:
+ functionName = Like.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ argNode = (CommonTree) predicateNode.getChild(0);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_PROPERTY), factory, selectors);
+ functionArguments.add(arg);
+ argNode = (CommonTree) predicateNode.getChild(1);
+ arg = getFunctionArgument(argNode, function.getArgumentDefinition(Like.ARG_EXP), factory, selectors);
+ functionArguments.add(arg);
+ arg = factory.createLiteralArgument(Like.ARG_NOT, DataTypeDefinition.BOOLEAN, (predicateNode.getChildCount() > 2));
+ functionArguments.add(arg);
+ return factory.createFunctionalConstraint(function, functionArguments);
+ default:
+ return null;
+ }
+ }
+
+ private Constraint buildFTS(String ftsExpression, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ // TODO: transform '' to ' to reverse encoding
+ FTSParser parser = null;
+ try
+ {
+ CharStream cs = new ANTLRStringStream(ftsExpression);
+ FTSLexer lexer = new FTSLexer(cs);
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ parser = new FTSParser(tokens);
+ CommonTree ftsNode = (CommonTree) parser.fts().getTree();
+ if (ftsNode.getType() == FTSParser.CONJUNCTION)
+ {
+ return buildFTSConjunction(ftsNode, factory, selectors, columns);
+ }
+ else
+ {
+ return buildFTSDisjunction(ftsNode, factory, selectors, columns);
+ }
+ }
+ catch (RecognitionException e)
+ {
+ if (parser != null)
+ {
+ String[] tokenNames = parser.getTokenNames();
+ String hdr = parser.getErrorHeader(e);
+ String msg = parser.getErrorMessage(e, tokenNames);
+ throw new CMISQueryException(hdr + "\n" + msg, e);
+ }
+ return null;
+ }
+
+ }
+
+ private Constraint buildFTSDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(orNode.getChildCount());
+ for (int i = 0; i < orNode.getChildCount(); i++)
+ {
+ CommonTree andNode = (CommonTree) orNode.getChild(i);
+ Constraint constraint = buildFTSConjunction(andNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createDisjunction(constraints);
+ }
+ }
+
+ private Constraint buildFTSConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ List constraints = new ArrayList(andNode.getChildCount());
+ for (int i = 0; i < andNode.getChildCount(); i++)
+ {
+ CommonTree notNode = (CommonTree) andNode.getChild(i);
+ Constraint constraint = buildFTSNegation(notNode, factory, selectors, columns);
+ constraints.add(constraint);
+ }
+ if (constraints.size() == 1)
+ {
+ return constraints.get(0);
+ }
+ else
+ {
+ return factory.createConjunction(constraints);
+ }
+ }
+
+ private Constraint buildFTSNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ if (notNode.getType() == FTSParser.NEGATION)
+ {
+ Constraint constraint = buildFTSTest(notNode, factory, selectors, columns);
+ return factory.createNegation(constraint);
+ }
+ else
+ {
+ return buildFTSTest(notNode, factory, selectors, columns);
+ }
+ }
+
+ private Constraint buildFTSTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns)
+ {
+ String functionName;
+ Function function;
+ List functionArguments;
+ Argument arg;
+ switch (testNode.getType())
+ {
+ case FTSParser.DISJUNCTION:
+ return buildFTSDisjunction(testNode, factory, selectors, columns);
+ case FTSParser.CONJUNCTION:
+ return buildFTSConjunction(testNode, factory, selectors, columns);
+ case FTSParser.TERM:
+ functionName = FTSTerm.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if (testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.EXACT_TERM:
+ functionName = FTSExactTerm.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSExactTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if (testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSExactTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.PHRASE:
+ // TODO: transform "" to " to reverse escaping
+ functionName = FTSPhrase.NAME;
+ function = factory.getFunction(functionName);
+ functionArguments = new ArrayList();
+ arg = factory.createLiteralArgument(FTSPhrase.ARG_PHRASE, DataTypeDefinition.TEXT, testNode.getChild(0).getText());
+ functionArguments.add(arg);
+ if (testNode.getChildCount() > 1)
+ {
+ arg = buildColumnReference(FTSPhrase.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory);
+ functionArguments.add(arg);
+ }
+ return factory.createFunctionalConstraint(function, functionArguments);
+ case FTSParser.SYNONYM:
+ case FTSParser.FG_PROXIMITY:
+ case FTSParser.FG_RANGE:
+ case FTSParser.FIELD_GROUP:
+ case FTSParser.FIELD_CONJUNCTION:
+ case FTSParser.FIELD_DISJUNCTION:
+ default:
+ throw new CMISQueryException("Unsupported FTS option " + testNode.getText());
+ }
+ }
+
+ /**
+ * @param queryNode
+ * @param factory
+ * @param selectors
+ * @return
+ */
+ private ArrayList buildOrderings(CommonTree queryNode, QueryModelFactory factory, Map selectors, List columns)
+ {
+ ArrayList orderings = new ArrayList();
+ CommonTree orderNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ORDER);
+ if (orderNode != null)
+ {
+ for (int i = 0; i < orderNode.getChildCount(); i++)
+ {
+ CommonTree current = (CommonTree) orderNode.getChild(i);
+
+ CommonTree columnRefNode = (CommonTree) current.getFirstChildWithType(CMISParser.COLUMN_REF);
+ if (columnRefNode != null)
+ {
+ String columnName = columnRefNode.getChild(0).getText();
+ String qualifier = "";
+ if (columnRefNode.getChildCount() > 1)
+ {
+ qualifier = columnRefNode.getChild(1).getText();
+ }
+
+ Order order = Order.ASCENDING;
+
+ if (current.getChild(1).getType() == CMISParser.DESC)
+ {
+ order = Order.DESCENDING;
+ }
+
+ Column orderColumn = null;
+
+ if (qualifier.length() == 0)
+ {
+ Column match = null;
+ for (Column column : columns)
+ {
+ if (column.getAlias().equals(columnName))
+ {
+ match = column;
+ break;
+ }
+ }
+ if (match == null)
+ {
+
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier);
+ }
+ QName cmisType = cmisMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (cmisMapping.isValidCmisDocument(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (cmisMapping.isValidCmisFolder(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
+
+ if (definition == null)
+ {
+ throw new CMISQueryException("Invalid column for " + cmisMapping.getQueryName(typeId.getQName()) + "." + columnName);
+ }
+
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = cmisMapping.getPropertyQName(definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+
+ String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
+
+ match = factory.createColumn(function, functionArguments, alias);
+ }
+ orderColumn = match;
+ }
+ else
+ {
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier);
+ }
+ QName cmisType = cmisMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (cmisMapping.isValidCmisDocument(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (cmisMapping.isValidCmisFolder(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
+
+ if (definition == null)
+ {
+ throw new CMISQueryException("Invalid column for "
+ + cmisMapping.getQueryName(typeId.getQName()) + "." + columnName + " selector alias " + selector.getAlias());
+ }
+
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = cmisMapping.getPropertyQName(definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+
+ String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
+
+ orderColumn = factory.createColumn(function, functionArguments, alias);
+ }
+
+ // TODO: check orderable - add to the column definition
+
+ Ordering ordering = factory.createOrdering(orderColumn, order);
+ orderings.add(ordering);
+
+ }
+ }
+ }
+ return orderings;
+ }
+
+ private ArrayList buildColumns(CommonTree queryNode, QueryModelFactory factory, Map selectors)
+ {
+ ArrayList columns = new ArrayList();
+ CommonTree starNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.ALL_COLUMNS);
+ if (starNode != null)
+ {
+ for (Selector selector : selectors.values())
+ {
+ QName cmisType = cmisMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (cmisMapping.isValidCmisDocument(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (cmisMapping.isValidCmisFolder(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ Map propDefs = cmisDictionaryService.getPropertyDefinitions(typeId);
+ for (CMISPropertyDefinition definition : propDefs.values())
+ {
+ if (definition.getCardinality() == CMISCardinality.SINGLE_VALUED)
+ {
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = cmisMapping.getPropertyQName(definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+ Column column = factory.createColumn(function, functionArguments, selector.getAlias() + "." + definition.getPropertyName());
+ columns.add(column);
+ }
+ }
+ }
+ }
+
+ CommonTree columnsNode = (CommonTree) queryNode.getFirstChildWithType(CMISParser.COLUMNS);
+ if (columnsNode != null)
+ {
+ CommonTree allColumnsNode = (CommonTree) columnsNode.getFirstChildWithType(CMISParser.ALL_COLUMNS);
+ if (allColumnsNode != null)
+ {
+ String qualifier = allColumnsNode.getChild(0).getText();
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier + " in " + qualifier + ".*");
+ }
+ QName cmisType = cmisMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (cmisMapping.isValidCmisDocument(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (cmisMapping.isValidCmisFolder(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ Map propDefs = cmisDictionaryService.getPropertyDefinitions(typeId);
+ for (CMISPropertyDefinition definition : propDefs.values())
+ {
+ if (definition.getCardinality() == CMISCardinality.SINGLE_VALUED)
+ {
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = cmisMapping.getPropertyQName(definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+ Column column = factory.createColumn(function, functionArguments, selector.getAlias() + "." + definition.getPropertyName());
+ columns.add(column);
+ }
+ }
+ }
+
+ CommonTree columnNode = (CommonTree) columnsNode.getFirstChildWithType(CMISParser.COLUMN);
+ if (columnNode != null)
+ {
+ CommonTree columnRefNode = (CommonTree) columnNode.getFirstChildWithType(CMISParser.COLUMN_REF);
+ if (columnRefNode != null)
+ {
+ String columnName = columnRefNode.getChild(0).getText();
+ String qualifier = "";
+ if (columnRefNode.getChildCount() > 1)
+ {
+ qualifier = columnRefNode.getChild(1).getText();
+ }
+ Selector selector = selectors.get(qualifier);
+ if (selector == null)
+ {
+ throw new CMISQueryException("No selector for " + qualifier);
+ }
+ QName cmisType = cmisMapping.getCmisType(selector.getType());
+ CMISTypeId typeId = null;
+ if (cmisMapping.isValidCmisDocument(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.DOCUMENT, cmisType);
+ }
+ else if (cmisMapping.isValidCmisFolder(cmisType))
+ {
+ typeId = cmisMapping.getCmisTypeId(CMISScope.FOLDER, cmisType);
+ }
+ else
+ {
+ throw new CMISQueryException("Type unsupported in CMIS queries: " + selector.getAlias());
+ }
+ CMISPropertyDefinition definition = cmisDictionaryService.getPropertyDefinition(typeId, columnName);
+
+ if (definition == null)
+ {
+ throw new CMISQueryException("Invalid column for " + cmisMapping.getQueryName(typeId.getQName()) + "." + columnName);
+ }
+
+ Function function = factory.getFunction(PropertyAccessor.NAME);
+ QName propertyQName = cmisMapping.getPropertyQName(definition.getPropertyName());
+ Argument arg = factory.createPropertyArgument(PropertyAccessor.ARG_PROPERTY, selector.getAlias(), propertyQName);
+ List functionArguments = new ArrayList(1);
+ functionArguments.add(arg);
+
+ String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyName() : definition.getPropertyName();
+ if (columnNode.getChildCount() > 1)
+ {
+ alias = columnNode.getChild(1).getText();
+ }
+
+ Column column = factory.createColumn(function, functionArguments, alias);
+ columns.add(column);
+
+ }
+
+ CommonTree functionNode = (CommonTree) columnNode.getFirstChildWithType(CMISParser.FUNCTION);
+ if (functionNode != null)
+ {
+ String functionName = getFunctionName((CommonTree) functionNode.getChild(0));
+ Function function = factory.getFunction(functionName);
+ Set definitions = function.getArgumentDefinitions();
+ List functionArguments = new ArrayList();
+
+ int childIndex = 1;
+ for (ArgumentDefinition definition : definitions)
+ {
+ if (functionNode.getChildCount() > childIndex)
+ {
+ CommonTree argNode = (CommonTree) functionNode.getChild(childIndex++);
+ Argument arg = getFunctionArgument(argNode, definition, factory, selectors);
+ functionArguments.add(arg);
+ }
+ else
+ {
+ if (definition.isMandatory())
+ {
+ // throw new CMISQueryException("Insufficient aruments for function " + ((CommonTree)
+ // functionNode.getChild(0)).getText() );
+ break;
+ }
+ else
+ {
+ // ok
+ }
+ }
+ }
+
+ String alias = function.getName();
+ if (columnNode.getChildCount() > 1)
+ {
+ alias = columnNode.getChild(1).getText();
+ }
+
+ Column column = factory.createColumn(function, functionArguments, alias);
+ columns.add(column);
+ }
+
+ }
+ }
+
+ return columns;
+ }
+
+ private Argument getFunctionArgument(CommonTree argNode, ArgumentDefinition definition, QueryModelFactory factory, Map selectors)
+ {
+ if (argNode.getType() == CMISParser.COLUMN_REF)
+ {
+ Argument arg = buildColumnReference(definition.getName(), argNode, factory);
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.ID)
+ {
+ Argument arg;
+ String id = argNode.getText();
+ if (selectors.containsKey(id))
+ {
+ arg = factory.createSelectorArgument(definition.getName(), id);
+ }
+ else
+ {
+ QName propertyQName = cmisMapping.getPropertyQName(id);
+ arg = factory.createPropertyArgument(definition.getName(), "", propertyQName);
+ }
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.PARAMETER)
+ {
+ Argument arg = factory.createParameterArgument(definition.getName(), argNode.getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.NUMERIC_LITERAL)
+ {
+ CommonTree literalNode = (CommonTree) argNode.getChild(0);
+ if (literalNode.getType() == CMISParser.FLOATING_POINT_LITERAL)
+ {
+ QName type = DataTypeDefinition.DOUBLE;
+ Number value = Double.parseDouble(literalNode.getText());
+ if (value.floatValue() == value.doubleValue())
+ {
+ type = DataTypeDefinition.FLOAT;
+ value = Float.valueOf(value.floatValue());
+ }
+ Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
+ return arg;
+ }
+ else if (literalNode.getType() == CMISParser.DECIMAL_INTEGER_LITERAL)
+ {
+ QName type = DataTypeDefinition.LONG;
+ Number value = Long.parseLong(literalNode.getText());
+ if (value.intValue() == value.longValue())
+ {
+ type = DataTypeDefinition.INT;
+ value = Integer.valueOf(value.intValue());
+ }
+ Argument arg = factory.createLiteralArgument(definition.getName(), type, value);
+ return arg;
+ }
+ else
+ {
+ throw new CMISQueryException("Invalid numeric literal " + literalNode.getText());
+ }
+ }
+ else if (argNode.getType() == CMISParser.STRING_LITERAL)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getChild(0).getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.LIST)
+ {
+ ArrayList arguments = new ArrayList();
+ for (int i = 0; i < argNode.getChildCount(); i++)
+ {
+ CommonTree arg = (CommonTree) argNode.getChild(i);
+ arguments.add(getFunctionArgument(arg, definition, factory, selectors));
+ }
+ Argument arg = factory.createListArgument(definition.getName(), arguments);
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.ANY)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.NOT)
+ {
+ Argument arg = factory.createLiteralArgument(definition.getName(), DataTypeDefinition.TEXT, argNode.getText());
+ return arg;
+ }
+ else if (argNode.getType() == CMISParser.FUNCTION)
+ {
+ String functionName = getFunctionName((CommonTree) argNode.getChild(0));
+ Function function = factory.getFunction(functionName);
+ Set definitions = function.getArgumentDefinitions();
+ List functionArguments = new ArrayList();
+
+ int childIndex = 1;
+ for (ArgumentDefinition currentDefinition : definitions)
+ {
+ if (argNode.getChildCount() > childIndex)
+ {
+ CommonTree currentArgNode = (CommonTree) argNode.getChild(childIndex++);
+ Argument arg = getFunctionArgument(currentArgNode, currentDefinition, factory, selectors);
+ functionArguments.add(arg);
+ }
+ else
+ {
+ if (definition.isMandatory())
+ {
+ // throw new CMISQueryException("Insufficient aruments for function " + ((CommonTree)
+ // functionNode.getChild(0)).getText() );
+ break;
+ }
+ else
+ {
+ // ok
+ }
+ }
+ }
+ Argument arg = factory.createFunctionArgument(definition.getName(), function, functionArguments);
+ return arg;
+ }
+ else
+ {
+ throw new CMISQueryException("Invalid function argument " + argNode.getText());
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private Source buildSource(CommonTree source, JoinSupport joinSupport, QueryModelFactory factory)
+ {
+ if (source.getChildCount() == 1)
+ {
+ // single table reference
+ CommonTree singleTableNode = (CommonTree) source.getChild(0);
+ if (singleTableNode.getType() == CMISParser.TABLE)
+ {
+ if (joinSupport == JoinSupport.NO_JOIN_SUPPORT)
+ {
+ throw new UnsupportedOperationException("Joins are not supported");
+ }
+ CommonTree tableSourceNode = (CommonTree) singleTableNode.getFirstChildWithType(CMISParser.SOURCE);
+ return buildSource(tableSourceNode, joinSupport, factory);
+
+ }
+ if (singleTableNode.getType() != CMISParser.TABLE_REF)
+ {
+ throw new CMISQueryException("Expecting TABLE_REF token but found " + singleTableNode.getText());
+ }
+ String tableName = singleTableNode.getChild(0).getText();
+ String alias = "";
+ if (singleTableNode.getChildCount() > 1)
+ {
+ alias = singleTableNode.getChild(1).getText();
+ }
+ QName classQName = cmisMapping.getAlfrescoClassQNameFromCmisTableName(tableName);
+ return factory.createSelector(classQName, alias);
+ }
+ else
+ {
+ if (joinSupport == JoinSupport.NO_JOIN_SUPPORT)
+ {
+ throw new UnsupportedOperationException("Joins are not supported");
+ }
+ CommonTree singleTableNode = (CommonTree) source.getChild(0);
+ if (singleTableNode.getType() != CMISParser.TABLE_REF)
+ {
+ throw new CMISQueryException("Expecting TABLE_REF token but found " + singleTableNode.getText());
+ }
+ String tableName = singleTableNode.getChild(0).getText();
+ String alias = "";
+ if (singleTableNode.getChildCount() == 2)
+ {
+ alias = singleTableNode.getChild(1).getText();
+ }
+ QName classQName = cmisMapping.getAlfrescoClassQNameFromCmisTableName(tableName);
+ Source lhs = factory.createSelector(classQName, alias);
+
+ List list = (List) (source.getChildren());
+ for (CommonTree joinNode : list)
+ {
+ if (joinNode.getType() == CMISParser.JOIN)
+ {
+ CommonTree rhsSource = (CommonTree) joinNode.getFirstChildWithType(CMISParser.SOURCE);
+ Source rhs = buildSource(rhsSource, joinSupport, factory);
+
+ JoinType joinType = JoinType.INNER;
+ CommonTree joinTypeNode = (CommonTree) joinNode.getFirstChildWithType(CMISParser.LEFT);
+ if (joinTypeNode != null)
+ {
+ joinType = JoinType.LEFT;
+ }
+
+ if ((joinType == JoinType.LEFT) && (joinSupport == JoinSupport.INNER_JOIN_SUPPORT))
+ {
+ throw new UnsupportedOperationException("Outer joins are not supported");
+ }
+
+ Constraint joinCondition = null;
+ CommonTree joinConditionNode = (CommonTree) joinNode.getFirstChildWithType(CMISParser.ON);
+ if (joinConditionNode != null)
+ {
+ Argument arg1 = buildColumnReference(Equals.ARG_LHS, (CommonTree) joinConditionNode.getChild(0), factory);
+ String functionName = getFunctionName((CommonTree) joinConditionNode.getChild(1));
+ Argument arg2 = buildColumnReference(Equals.ARG_RHS, (CommonTree) joinConditionNode.getChild(2), factory);
+ Function function = factory.getFunction(functionName);
+ List functionArguments = new ArrayList(2);
+ functionArguments.add(arg1);
+ functionArguments.add(arg2);
+ joinCondition = factory.createFunctionalConstraint(function, functionArguments);
+ }
+
+ Source join = factory.createJoin(lhs, rhs, joinType, joinCondition);
+ lhs = join;
+ }
+ }
+
+ return lhs;
+
+ }
+ }
+
+ public Argument buildColumnReference(String argumentName, CommonTree columnReferenceNode, QueryModelFactory factory)
+ {
+ String cmisPropertyName = columnReferenceNode.getChild(0).getText();
+ String qualifer = "";
+ if (columnReferenceNode.getChildCount() > 1)
+ {
+ qualifer = columnReferenceNode.getChild(1).getText();
+ }
+ QName propertyQName = cmisMapping.getPropertyQName(cmisPropertyName);
+ return factory.createPropertyArgument(argumentName, qualifer, propertyQName);
+ }
+
+ public String getFunctionName(CommonTree functionNameNode)
+ {
+ switch (functionNameNode.getType())
+ {
+ case CMISParser.EQUALS:
+ return Equals.NAME;
+ case CMISParser.UPPER:
+ return Upper.NAME;
+ case CMISParser.SCORE:
+ return Score.NAME;
+ case CMISParser.LOWER:
+ return Lower.NAME;
+ default:
+ throw new CMISQueryException("Unknown function: " + functionNameNode.getText());
+ }
+ }
+}
diff --git a/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java b/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java
new file mode 100644
index 0000000000..bf1fc3aff8
--- /dev/null
+++ b/source/java/org/alfresco/cmis/search/impl/CMISQueryServiceImpl.java
@@ -0,0 +1,120 @@
+/*
+ * 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.cmis.search.impl;
+
+import org.alfresco.cmis.CMISService;
+import org.alfresco.cmis.dictionary.CMISDictionaryService;
+import org.alfresco.cmis.dictionary.CMISMapping;
+import org.alfresco.cmis.search.CMISQueryOptions;
+import org.alfresco.cmis.search.CMISQueryService;
+import org.alfresco.cmis.search.CMISResultSet;
+import org.alfresco.cmis.search.FullTextSearchSupport;
+import org.alfresco.cmis.search.JoinSupport;
+import org.alfresco.repo.search.impl.querymodel.Query;
+
+/**
+ * @author andyh
+ */
+public class CMISQueryServiceImpl implements CMISQueryService
+{
+ private CMISService cmisService;
+
+ private CMISDictionaryService cmisDictionaryService;
+
+ private CMISMapping cmisMapping;
+
+ /**
+ * @param service the service to set
+ */
+ public void setCmisService(CMISService cmisService)
+ {
+ this.cmisService = cmisService;
+ }
+
+ /**
+ * @param cmisDictionaryService the cmisDictionaryService to set
+ */
+ public void setCmisDictionaryService(CMISDictionaryService cmisDictionaryService)
+ {
+ this.cmisDictionaryService = cmisDictionaryService;
+ }
+
+ /**
+ * @param cmisMapping the cmisMapping to set
+ */
+ public void setCmisMapping(CMISMapping cmisMapping)
+ {
+ this.cmisMapping = cmisMapping;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.search.CMISQueryService#query(org.alfresco.cmis.search.CMISQueryOptions)
+ */
+ public CMISResultSet query(CMISQueryOptions options)
+ {
+ CMISQueryParser parser = new CMISQueryParser(options, cmisDictionaryService, cmisMapping, getJoinSupport());
+ Query query = parser.parse();
+ System.out.println(query);
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.alfresco.cmis.search.CMISQueryService#query(java.lang.String)
+ */
+ public CMISResultSet query(String query)
+ {
+ CMISQueryOptions options = new CMISQueryOptions(query, cmisService.getDefaultRootStoreRef());
+ return query(options);
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.search.CMISQueryService#getAllVersionsSearchable()
+ */
+ public boolean getAllVersionsSearchable()
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.search.CMISQueryService#getFullTextSearchSupport()
+ */
+ public FullTextSearchSupport getFullTextSearchSupport()
+ {
+ return FullTextSearchSupport.FULL_TEXT_AND_STRUCTURED;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.cmis.search.CMISQueryService#getJoinSupport()
+ */
+ public JoinSupport getJoinSupport()
+ {
+ return JoinSupport.NO_JOIN_SUPPORT;
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
index 8e7bd54ce7..05688c08e6 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
@@ -52,6 +52,7 @@ import org.alfresco.repo.dictionary.DictionaryNamespaceComponent;
import org.alfresco.repo.dictionary.M2Model;
import org.alfresco.repo.dictionary.NamespaceDAOImpl;
import org.alfresco.repo.domain.hibernate.HibernateL1CacheBulkLoader;
+import org.alfresco.repo.domain.hibernate.HibernateSessionHelper;
import org.alfresco.repo.domain.hibernate.SessionSizeResourceManager;
import org.alfresco.repo.node.BaseNodeServiceTest;
import org.alfresco.repo.search.MLAnalysisMode;
@@ -546,7 +547,8 @@ public class ADMLuceneTest extends TestCase
private void doBulkTest(int n) throws Exception
{
-
+ SessionSizeResourceManager.setDisableInTransaction();
+
Map testProperties = new HashMap();
testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic"), "BULK");
for (int i = 0; i < n; i++)
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
index 1f691759ec..b54a38b603 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneResultSet.java
@@ -64,7 +64,7 @@ public class LuceneResultSet extends AbstractResultSet
private TenantService tenantService;
- SearchParameters searchParameters;
+ private SearchParameters searchParameters;
private LuceneConfig config;
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 6c37f0dc04..f4a563b081 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g
@@ -495,6 +495,27 @@ keyWordOrId
/*
* LEXER
*/
+
+/*
+ * Quoted strings take precedence
+ */
+
+SINGLE_QUOTE
+ : '\'';
+
+/*
+ * Fragments for quoted strings
+ */
+
+fragment
+ESCAPED_SINGLE_QUOTE
+ : '\'\'';
+
+QUOTED_STRING
+ : SINGLE_QUOTE ( ~SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE)* SINGLE_QUOTE
+ ;
+
+
SELECT : ('S'|'s')('E'|'e')('L'|'l')('E'|'e')('C'|'c')('T'|'t');
AS : ('A'|'a')('S'|'s');
@@ -545,17 +566,10 @@ LESSTHANOREQUALS
: '<=' ;
COLON : ':' ;
-SINGLE_QUOTE
- : '\'';
-
DOUBLE_QUOTE
: '"'
;
-QUOTED_STRING
- : SINGLE_QUOTE ( ~SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE)* SINGLE_QUOTE
- ;
-
/*
* Decimal adapted from the Java spec
@@ -577,14 +591,7 @@ FLOATING_POINT_LITERAL
ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'0'|'_'|'$'|'#')* ;
WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel = HIDDEN; } ;
-/*
- * Fragments for quoted strings
- */
-
-fragment
-ESCAPED_SINGLE_QUOTE
- : '\'\'';
-
+
/**
* Fragments for decimal
*/
diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.tokens b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.tokens
index eaf5076c5b..57a3e81d02 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.tokens
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.tokens
@@ -11,7 +11,7 @@ PRED_COMPARISON=18
CONTAINS=58
TABLE=12
SOURCE=11
-DOTDOT=74
+DOTDOT=76
EQUALS=43
NOT=47
ID=67
@@ -19,9 +19,9 @@ AND=46
LPAREN=35
LESSTHANOREQUALS=51
AS=32
-SINGLE_QUOTE=76
+SINGLE_QUOTE=74
RPAREN=36
-TILDA=75
+TILDA=77
PRED_LIKE=21
STRING_LITERAL=28
IN=53
@@ -81,4 +81,4 @@ ALL_COLUMNS=5
FROM=37
UPPER=71
PRED_IN=19
-ESCAPED_SINGLE_QUOTE=77
+ESCAPED_SINGLE_QUOTE=75
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 296b78bf2e..fc94878287 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-15 16:24:40
+// $ANTLR 3.1b1 W:\\workspace-cmis2\\ANTLR\\CMIS.g 2008-07-21 10:14:45
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -21,7 +21,7 @@ public class CMISLexer extends Lexer {
public static final int TABLE=12;
public static final int SOURCE=11;
public static final int EQUALS=43;
- public static final int DOTDOT=74;
+ public static final int DOTDOT=76;
public static final int NOT=47;
public static final int ID=67;
public static final int AND=46;
@@ -29,9 +29,9 @@ public class CMISLexer extends Lexer {
public static final int LPAREN=35;
public static final int LESSTHANOREQUALS=51;
public static final int AS=32;
- public static final int SINGLE_QUOTE=76;
+ public static final int SINGLE_QUOTE=74;
public static final int RPAREN=36;
- public static final int TILDA=75;
+ public static final int TILDA=77;
public static final int PRED_LIKE=21;
public static final int STRING_LITERAL=28;
public static final int IN=53;
@@ -91,7 +91,7 @@ public class CMISLexer extends Lexer {
public static final int FROM=37;
public static final int UPPER=71;
public static final int PRED_IN=19;
- public static final int ESCAPED_SINGLE_QUOTE=77;
+ public static final int ESCAPED_SINGLE_QUOTE=75;
// delegates
// delegators
@@ -104,15 +104,122 @@ public class CMISLexer extends Lexer {
super(input,state);
}
- public String getGrammarFileName() { return "W:\\workspace-cmis\\ANTLR\\CMIS.g"; }
+ public String getGrammarFileName() { return "W:\\workspace-cmis2\\ANTLR\\CMIS.g"; }
+
+ // $ANTLR start SINGLE_QUOTE
+ public final void mSINGLE_QUOTE() throws RecognitionException {
+ 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: '\\''
+ {
+ match('\'');
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end SINGLE_QUOTE
+
+ // $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: '\\'\\''
+ {
+ match("\'\'");
+
+
+ }
+
+ }
+ finally {
+ }
+ }
+ // $ANTLR end ESCAPED_SINGLE_QUOTE
+
+ // $ANTLR start QUOTED_STRING
+ public final void mQUOTED_STRING() throws RecognitionException {
+ 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
+ {
+ mSINGLE_QUOTE();
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:22: (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )*
+ loop1:
+ do {
+ int alt1=3;
+ int LA1_0 = input.LA(1);
+
+ if ( (LA1_0=='\'') ) {
+ int LA1_1 = input.LA(2);
+
+ if ( (LA1_1=='\'') ) {
+ alt1=2;
+ }
+
+
+ }
+ else if ( ((LA1_0>='\u0000' && LA1_0<='&')||(LA1_0>='(' && LA1_0<='\uFFFE')) ) {
+ alt1=1;
+ }
+
+
+ switch (alt1) {
+ case 1 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:24: ~ SINGLE_QUOTE
+ {
+ if ( (input.LA(1)>='\u0000' && input.LA(1)<='I')||(input.LA(1)>='K' && input.LA(1)<='\uFFFE') ) {
+ input.consume();
+
+ }
+ else {
+ MismatchedSetException mse = new MismatchedSetException(null,input);
+ recover(mse);
+ throw mse;}
+
+
+ }
+ break;
+ case 2 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:515:40: ESCAPED_SINGLE_QUOTE
+ {
+ mESCAPED_SINGLE_QUOTE();
+
+ }
+ break;
+
+ default :
+ break loop1;
+ }
+ } while (true);
+
+ mSINGLE_QUOTE();
+
+ }
+
+ state.type = _type;
+ state.channel = _channel;
+ }
+ finally {
+ }
+ }
+ // $ANTLR end QUOTED_STRING
// $ANTLR start SELECT
public final void mSELECT() throws RecognitionException {
try {
int _type = SELECT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:499:8: ( ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:499:10: ( 'S' | 's' ) ( 'E' | 'e' ) ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'C' | 'c' ) ( 'T' | 't' )
+ // 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' )
{
if ( input.LA(1)=='S'||input.LA(1)=='s' ) {
input.consume();
@@ -184,8 +291,8 @@ public class CMISLexer extends Lexer {
try {
int _type = AS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:500:4: ( ( 'A' | 'a' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:500:6: ( 'A' | 'a' ) ( 'S' | 's' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:521:4: ( ( 'A' | 'a' ) ( 'S' | 's' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:521:6: ( 'A' | 'a' ) ( 'S' | 's' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -221,8 +328,8 @@ public class CMISLexer extends Lexer {
try {
int _type = UPPER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:501:7: ( ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:501:9: ( 'U' | 'u' ) ( 'P' | 'p' ) ( 'P' | 'p' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='U'||input.LA(1)=='u' ) {
input.consume();
@@ -285,8 +392,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LOWER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:502:7: ( ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:502:9: ( 'L' | 'l' ) ( 'O' | 'o' ) ( 'W' | 'w' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -349,8 +456,8 @@ public class CMISLexer extends Lexer {
try {
int _type = FROM;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:503:6: ( ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:503:8: ( 'F' | 'f' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'M' | 'm' )
+ // 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' )
{
if ( input.LA(1)=='F'||input.LA(1)=='f' ) {
input.consume();
@@ -404,8 +511,8 @@ public class CMISLexer extends Lexer {
try {
int _type = JOIN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:504:6: ( ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:504:8: ( 'J' | 'j' ) ( 'O' | 'o' ) ( 'I' | 'i' ) ( 'N' | 'n' )
+ // 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' )
{
if ( input.LA(1)=='J'||input.LA(1)=='j' ) {
input.consume();
@@ -459,8 +566,8 @@ public class CMISLexer extends Lexer {
try {
int _type = INNER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:505:7: ( ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:505:9: ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'N' | 'n' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -523,8 +630,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LEFT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:506:6: ( ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:506:8: ( 'L' | 'l' ) ( 'E' | 'e' ) ( 'F' | 'f' ) ( 'T' | 't' )
+ // 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' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -578,8 +685,8 @@ public class CMISLexer extends Lexer {
try {
int _type = OUTER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:507:7: ( ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:507:9: ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -642,8 +749,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ON;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:508:4: ( ( 'O' | 'o' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:508:6: ( 'O' | 'o' ) ( 'N' | 'n' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:4: ( ( 'O' | 'o' ) ( 'N' | 'n' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:529:6: ( 'O' | 'o' ) ( 'N' | 'n' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -679,8 +786,8 @@ public class CMISLexer extends Lexer {
try {
int _type = WHERE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:509:7: ( ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:509:9: ( 'W' | 'w' ) ( 'H' | 'h' ) ( 'E' | 'e' ) ( 'R' | 'r' ) ( 'E' | 'e' )
+ // 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' )
{
if ( input.LA(1)=='W'||input.LA(1)=='w' ) {
input.consume();
@@ -743,8 +850,8 @@ public class CMISLexer extends Lexer {
try {
int _type = OR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:510:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:510:6: ( 'O' | 'o' ) ( 'R' | 'r' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:531:6: ( 'O' | 'o' ) ( 'R' | 'r' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -780,8 +887,8 @@ public class CMISLexer extends Lexer {
try {
int _type = AND;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:511:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:511:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' )
+ // 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' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -826,8 +933,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:512:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:512:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' )
+ // 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' )
{
if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
input.consume();
@@ -872,8 +979,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:513:4: ( ( 'I' | 'i' ) ( 'N' | 'n' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:513:6: ( 'I' | 'i' ) ( 'N' | 'n' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:4: ( ( 'I' | 'i' ) ( 'N' | 'n' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:534:6: ( 'I' | 'i' ) ( 'N' | 'n' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -909,8 +1016,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LIKE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:514:6: ( ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:514:8: ( 'L' | 'l' ) ( 'I' | 'i' ) ( 'K' | 'k' ) ( 'E' | 'e' )
+ // 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' )
{
if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
input.consume();
@@ -964,8 +1071,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:515:4: ( ( 'I' | 'i' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:515:6: ( 'I' | 'i' ) ( 'S' | 's' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:4: ( ( 'I' | 'i' ) ( 'S' | 's' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:536:6: ( 'I' | 'i' ) ( 'S' | 's' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1001,8 +1108,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NULL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:516:6: ( ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:516:8: ( 'N' | 'n' ) ( 'U' | 'u' ) ( 'L' | 'l' ) ( 'L' | 'l' )
+ // 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' )
{
if ( input.LA(1)=='N'||input.LA(1)=='n' ) {
input.consume();
@@ -1056,8 +1163,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ANY;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:517:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:517:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'Y' | 'y' )
+ // 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' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -1102,8 +1209,8 @@ public class CMISLexer extends Lexer {
try {
int _type = CONTAINS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:518:9: ( ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:518:11: ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'N' | 'n' ) ( 'T' | 't' ) ( 'A' | 'a' ) ( 'I' | 'i' ) ( 'N' | 'n' ) ( 'S' | 's' )
+ // 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' )
{
if ( input.LA(1)=='C'||input.LA(1)=='c' ) {
input.consume();
@@ -1193,8 +1300,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN_FOLDER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:520:2: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:520:4: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'F' | 'f' ) ( 'O' | 'o' ) ( 'L' | 'l' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1285,8 +1392,8 @@ public class CMISLexer extends Lexer {
try {
int _type = IN_TREE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:521:9: ( ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:521:11: ( 'I' | 'i' ) ( 'N' | 'n' ) '_' ( 'T' | 't' ) ( 'R' | 'r' ) ( 'E' | 'e' ) ( 'E' | 'e' )
+ // 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' )
{
if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
input.consume();
@@ -1359,8 +1466,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ORDER;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:522:7: ( ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:522:9: ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'R' | 'r' )
+ // 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' )
{
if ( input.LA(1)=='O'||input.LA(1)=='o' ) {
input.consume();
@@ -1423,8 +1530,8 @@ public class CMISLexer extends Lexer {
try {
int _type = BY;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:523:4: ( ( 'B' | 'b' ) ( 'Y' | 'y' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:523:6: ( 'B' | 'b' ) ( 'Y' | 'y' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:4: ( ( 'B' | 'b' ) ( 'Y' | 'y' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:544:6: ( 'B' | 'b' ) ( 'Y' | 'y' )
{
if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
input.consume();
@@ -1460,8 +1567,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ASC;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:524:5: ( ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:524:7: ( 'A' | 'a' ) ( 'S' | 's' ) ( 'C' | 'c' )
+ // 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' )
{
if ( input.LA(1)=='A'||input.LA(1)=='a' ) {
input.consume();
@@ -1506,8 +1613,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DESC;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:525:6: ( ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:525:8: ( 'D' | 'd' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'C' | 'c' )
+ // 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' )
{
if ( input.LA(1)=='D'||input.LA(1)=='d' ) {
input.consume();
@@ -1561,8 +1668,8 @@ public class CMISLexer extends Lexer {
try {
int _type = SCORE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:526:7: ( ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:526:9: ( 'S' | 's' ) ( 'C' | 'c' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'E' | 'e' )
+ // 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' )
{
if ( input.LA(1)=='S'||input.LA(1)=='s' ) {
input.consume();
@@ -1625,8 +1732,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:527:8: ( '(' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:527:10: '('
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:8: ( '(' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:548:10: '('
{
match('(');
@@ -1645,8 +1752,8 @@ public class CMISLexer extends Lexer {
try {
int _type = RPAREN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:528:8: ( ')' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:528:10: ')'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:8: ( ')' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:549:10: ')'
{
match(')');
@@ -1665,8 +1772,8 @@ public class CMISLexer extends Lexer {
try {
int _type = STAR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:529:6: ( '*' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:529:8: '*'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:6: ( '*' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:550:8: '*'
{
match('*');
@@ -1685,8 +1792,8 @@ public class CMISLexer extends Lexer {
try {
int _type = COMMA;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:530:7: ( ',' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:530:9: ','
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:7: ( ',' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:551:9: ','
{
match(',');
@@ -1705,8 +1812,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOTSTAR;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:531:9: ( '.*' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:531:11: '.*'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:9: ( '.*' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:552:11: '.*'
{
match(".*");
@@ -1726,8 +1833,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:532:5: ( '.' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:532:7: '.'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:5: ( '.' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:553:7: '.'
{
match('.');
@@ -1746,8 +1853,8 @@ public class CMISLexer extends Lexer {
try {
int _type = DOTDOT;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:533:8: ( '..' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:533:10: '..'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:8: ( '..' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:554:10: '..'
{
match("..");
@@ -1767,8 +1874,8 @@ public class CMISLexer extends Lexer {
try {
int _type = EQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:534:9: ( '=' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:534:11: '='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:9: ( '=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:555:11: '='
{
match('=');
@@ -1787,8 +1894,8 @@ public class CMISLexer extends Lexer {
try {
int _type = TILDA;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:535:7: ( '~' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:535:9: '~'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:7: ( '~' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:556:9: '~'
{
match('~');
@@ -1807,8 +1914,8 @@ public class CMISLexer extends Lexer {
try {
int _type = NOTEQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:537:2: ( '<>' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:537:4: '<>'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:2: ( '<>' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:558:4: '<>'
{
match("<>");
@@ -1828,8 +1935,8 @@ public class CMISLexer extends Lexer {
try {
int _type = GREATERTHAN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:539:2: ( '>' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:539:4: '>'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:2: ( '>' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:560:4: '>'
{
match('>');
@@ -1848,8 +1955,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LESSTHAN;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:541:2: ( '<' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:541:4: '<'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:2: ( '<' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:562:4: '<'
{
match('<');
@@ -1868,8 +1975,8 @@ public class CMISLexer extends Lexer {
try {
int _type = GREATERTHANOREQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:543:2: ( '>=' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:543:4: '>='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:2: ( '>=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:564:4: '>='
{
match(">=");
@@ -1889,8 +1996,8 @@ public class CMISLexer extends Lexer {
try {
int _type = LESSTHANOREQUALS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:545:2: ( '<=' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:545:4: '<='
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:2: ( '<=' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:566:4: '<='
{
match("<=");
@@ -1910,8 +2017,8 @@ public class CMISLexer extends Lexer {
try {
int _type = COLON;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:546:7: ( ':' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:546:9: ':'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:567:7: ( ':' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:567:9: ':'
{
match(':');
@@ -1925,33 +2032,13 @@ public class CMISLexer extends Lexer {
}
// $ANTLR end COLON
- // $ANTLR start SINGLE_QUOTE
- public final void mSINGLE_QUOTE() throws RecognitionException {
- try {
- int _type = SINGLE_QUOTE;
- int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:549:9: ( '\\'' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:549:17: '\\''
- {
- match('\'');
-
- }
-
- state.type = _type;
- state.channel = _channel;
- }
- finally {
- }
- }
- // $ANTLR end SINGLE_QUOTE
-
// $ANTLR start DOUBLE_QUOTE
public final void mDOUBLE_QUOTE() throws RecognitionException {
try {
int _type = DOUBLE_QUOTE;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:552:2: ( '\"' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:552:4: '\"'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:570:2: ( '\"' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:570:4: '\"'
{
match('\"');
@@ -1965,85 +2052,15 @@ public class CMISLexer extends Lexer {
}
// $ANTLR end DOUBLE_QUOTE
- // $ANTLR start QUOTED_STRING
- public final void mQUOTED_STRING() throws RecognitionException {
- try {
- int _type = QUOTED_STRING;
- int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:556:2: ( SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:556:4: SINGLE_QUOTE (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )* SINGLE_QUOTE
- {
- mSINGLE_QUOTE();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:556:17: (~ SINGLE_QUOTE | ESCAPED_SINGLE_QUOTE )*
- loop1:
- do {
- int alt1=3;
- int LA1_0 = input.LA(1);
-
- if ( (LA1_0=='\'') ) {
- int LA1_1 = input.LA(2);
-
- if ( (LA1_1=='\'') ) {
- alt1=2;
- }
-
-
- }
- else if ( ((LA1_0>='\u0000' && LA1_0<='&')||(LA1_0>='(' && LA1_0<='\uFFFE')) ) {
- alt1=1;
- }
-
-
- switch (alt1) {
- case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:556:19: ~ SINGLE_QUOTE
- {
- if ( (input.LA(1)>='\u0000' && input.LA(1)<='K')||(input.LA(1)>='M' && input.LA(1)<='\uFFFE') ) {
- input.consume();
-
- }
- else {
- MismatchedSetException mse = new MismatchedSetException(null,input);
- recover(mse);
- throw mse;}
-
-
- }
- break;
- case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:556:35: ESCAPED_SINGLE_QUOTE
- {
- mESCAPED_SINGLE_QUOTE();
-
- }
- break;
-
- default :
- break loop1;
- }
- } while (true);
-
- mSINGLE_QUOTE();
-
- }
-
- state.type = _type;
- state.channel = _channel;
- }
- finally {
- }
- }
- // $ANTLR end QUOTED_STRING
-
// $ANTLR start DECIMAL_INTEGER_LITERAL
public final void mDECIMAL_INTEGER_LITERAL() throws RecognitionException {
try {
int _type = DECIMAL_INTEGER_LITERAL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:564:9: ( ( PLUS | MINUS )? DECIMAL_NUMERAL )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:564:11: ( PLUS | MINUS )? DECIMAL_NUMERAL
+ // 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-cmis\\ANTLR\\CMIS.g:564:11: ( PLUS | MINUS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:578:11: ( PLUS | MINUS )?
int alt2=2;
int LA2_0 = input.LA(1);
@@ -2052,7 +2069,7 @@ public class CMISLexer extends Lexer {
}
switch (alt2) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
input.consume();
@@ -2086,14 +2103,14 @@ public class CMISLexer extends Lexer {
try {
int _type = FLOATING_POINT_LITERAL;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:2: ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:2: ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT )
int alt9=3;
alt9 = dfa9.predict(input);
switch (alt9) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:4: ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )?
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:4: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: ( DIGIT )+
int cnt3=0;
loop3:
do {
@@ -2107,7 +2124,7 @@ public class CMISLexer extends Lexer {
switch (alt3) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:4: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:4: DIGIT
{
mDIGIT();
@@ -2124,7 +2141,7 @@ public class CMISLexer extends Lexer {
} while (true);
mDOT();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:15: ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:15: ( DIGIT )*
loop4:
do {
int alt4=2;
@@ -2137,7 +2154,7 @@ public class CMISLexer extends Lexer {
switch (alt4) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:15: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:15: DIGIT
{
mDIGIT();
@@ -2149,7 +2166,7 @@ public class CMISLexer extends Lexer {
}
} while (true);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:22: ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:22: ( EXPONENT )?
int alt5=2;
int LA5_0 = input.LA(1);
@@ -2158,7 +2175,7 @@ public class CMISLexer extends Lexer {
}
switch (alt5) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:571:22: EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:585:22: EXPONENT
{
mEXPONENT();
@@ -2171,10 +2188,10 @@ public class CMISLexer extends Lexer {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:572:4: DOT ( DIGIT )+ ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:4: DOT ( DIGIT )+ ( EXPONENT )?
{
mDOT();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:572:8: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:8: ( DIGIT )+
int cnt6=0;
loop6:
do {
@@ -2188,7 +2205,7 @@ public class CMISLexer extends Lexer {
switch (alt6) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:572:8: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:8: DIGIT
{
mDIGIT();
@@ -2204,7 +2221,7 @@ public class CMISLexer extends Lexer {
cnt6++;
} while (true);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:572:15: ( EXPONENT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:15: ( EXPONENT )?
int alt7=2;
int LA7_0 = input.LA(1);
@@ -2213,7 +2230,7 @@ public class CMISLexer extends Lexer {
}
switch (alt7) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:572:15: EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:586:15: EXPONENT
{
mEXPONENT();
@@ -2226,9 +2243,9 @@ public class CMISLexer extends Lexer {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:573:4: ( DIGIT )+ EXPONENT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+ EXPONENT
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:573:4: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: ( DIGIT )+
int cnt8=0;
loop8:
do {
@@ -2242,7 +2259,7 @@ public class CMISLexer extends Lexer {
switch (alt8) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:573:4: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:587:4: DIGIT
{
mDIGIT();
@@ -2277,8 +2294,8 @@ public class CMISLexer extends Lexer {
try {
int _type = ID;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:577:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:577:6: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
+ // 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' | '_' | '$' | '#' )*
{
if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
input.consume();
@@ -2289,7 +2306,7 @@ public class CMISLexer extends Lexer {
recover(mse);
throw mse;}
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:577:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:591:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )*
loop10:
do {
int alt10=2;
@@ -2302,7 +2319,7 @@ public class CMISLexer extends Lexer {
switch (alt10) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( (input.LA(1)>='#' && input.LA(1)<='$')||input.LA(1)=='0'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
input.consume();
@@ -2338,10 +2355,10 @@ public class CMISLexer extends Lexer {
try {
int _type = WS;
int _channel = DEFAULT_TOKEN_CHANNEL;
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:578:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:578:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:578:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:592:6: ( ' ' | '\\t' | '\\r' | '\\n' )+
int cnt11=0;
loop11:
do {
@@ -2355,7 +2372,7 @@ public class CMISLexer extends Lexer {
switch (alt11) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
input.consume();
@@ -2391,27 +2408,10 @@ public class CMISLexer extends Lexer {
}
// $ANTLR end WS
- // $ANTLR start ESCAPED_SINGLE_QUOTE
- public final void mESCAPED_SINGLE_QUOTE() throws RecognitionException {
- try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:586:9: ( '\\'\\'' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:586:17: '\\'\\''
- {
- match("\'\'");
-
-
- }
-
- }
- finally {
- }
- }
- // $ANTLR end ESCAPED_SINGLE_QUOTE
-
// $ANTLR start DECIMAL_NUMERAL
public final void mDECIMAL_NUMERAL() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:594:2: ( ZERO_DIGIT | NON_ZERO_DIGIT ( DIGIT )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:601: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-cmis\\ANTLR\\CMIS.g:594:4: ZERO_DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:601:4: ZERO_DIGIT
{
mZERO_DIGIT();
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:595:4: NON_ZERO_DIGIT ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:4: NON_ZERO_DIGIT ( DIGIT )*
{
mNON_ZERO_DIGIT();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:595:19: ( DIGIT )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:19: ( DIGIT )*
loop12:
do {
int alt12=2;
@@ -2452,7 +2452,7 @@ public class CMISLexer extends Lexer {
switch (alt12) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:595:19: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:602:19: DIGIT
{
mDIGIT();
@@ -2478,8 +2478,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start DIGIT
public final void mDIGIT() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:598:7: ( ZERO_DIGIT | NON_ZERO_DIGIT )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:605:7: ( ZERO_DIGIT | NON_ZERO_DIGIT )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( (input.LA(1)>='0' && input.LA(1)<='9') ) {
input.consume();
@@ -2502,8 +2502,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start ZERO_DIGIT
public final void mZERO_DIGIT() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:601:2: ( '0' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:601:4: '0'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:608:2: ( '0' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:608: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-cmis\\ANTLR\\CMIS.g:604:2: ( '1' .. '9' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:604:4: '1' .. '9'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:611:2: ( '1' .. '9' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:611: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-cmis\\ANTLR\\CMIS.g:606:6: ( '+' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:606:8: '+'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:6: ( '+' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:613:8: '+'
{
match('+');
@@ -2550,8 +2550,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start MINUS
public final void mMINUS() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:608:7: ( '-' )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:608:9: '-'
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:7: ( '-' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:615:9: '-'
{
match('-');
@@ -2566,8 +2566,8 @@ public class CMISLexer extends Lexer {
// $ANTLR start E
public final void mE() throws RecognitionException {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:611:3: ( ( 'e' | 'E' ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:611:5: ( 'e' | 'E' )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:618:3: ( ( 'e' | 'E' ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:618: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-cmis\\ANTLR\\CMIS.g:622:2: ( E SIGNED_INTEGER )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:622:4: E SIGNED_INTEGER
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:629:2: ( E SIGNED_INTEGER )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:629: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-cmis\\ANTLR\\CMIS.g:626:2: ( ( PLUS | MINUS )? ( DIGIT )+ )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:626:4: ( PLUS | MINUS )? ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:2: ( ( PLUS | MINUS )? ( DIGIT )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:4: ( PLUS | MINUS )? ( DIGIT )+
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:626:4: ( PLUS | MINUS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:4: ( PLUS | MINUS )?
int alt14=2;
int LA14_0 = input.LA(1);
@@ -2619,7 +2619,7 @@ public class CMISLexer extends Lexer {
}
switch (alt14) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
input.consume();
@@ -2636,7 +2636,7 @@ public class CMISLexer extends Lexer {
}
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:626:20: ( DIGIT )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:20: ( DIGIT )+
int cnt15=0;
loop15:
do {
@@ -2650,7 +2650,7 @@ public class CMISLexer extends Lexer {
switch (alt15) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:626:20: DIGIT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:633:20: DIGIT
{
mDIGIT();
@@ -2676,348 +2676,348 @@ public class CMISLexer extends Lexer {
// $ANTLR end SIGNED_INTEGER
public void mTokens() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:8: ( 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 | LPAREN | RPAREN | STAR | COMMA | DOTSTAR | DOT | DOTDOT | EQUALS | TILDA | NOTEQUALS | GREATERTHAN | LESSTHAN | GREATERTHANOREQUALS | LESSTHANOREQUALS | COLON | SINGLE_QUOTE | DOUBLE_QUOTE | QUOTED_STRING | DECIMAL_INTEGER_LITERAL | FLOATING_POINT_LITERAL | ID | WS )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:8: ( SINGLE_QUOTE | QUOTED_STRING | 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 | LPAREN | RPAREN | STAR | COMMA | DOTSTAR | DOT | DOTDOT | EQUALS | TILDA | NOTEQUALS | GREATERTHAN | LESSTHAN | GREATERTHANOREQUALS | LESSTHANOREQUALS | COLON | DOUBLE_QUOTE | DECIMAL_INTEGER_LITERAL | FLOATING_POINT_LITERAL | ID | WS )
int alt16=49;
alt16 = dfa16.predict(input);
switch (alt16) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:10: SELECT
- {
- mSELECT();
-
- }
- break;
- case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:17: AS
- {
- mAS();
-
- }
- break;
- case 3 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:20: UPPER
- {
- mUPPER();
-
- }
- break;
- case 4 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:26: LOWER
- {
- mLOWER();
-
- }
- break;
- case 5 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:32: FROM
- {
- mFROM();
-
- }
- break;
- case 6 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:37: JOIN
- {
- mJOIN();
-
- }
- break;
- case 7 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:42: INNER
- {
- mINNER();
-
- }
- break;
- case 8 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:48: LEFT
- {
- mLEFT();
-
- }
- break;
- case 9 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:53: OUTER
- {
- mOUTER();
-
- }
- break;
- case 10 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:59: ON
- {
- mON();
-
- }
- break;
- case 11 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:62: WHERE
- {
- mWHERE();
-
- }
- break;
- case 12 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:68: OR
- {
- mOR();
-
- }
- break;
- case 13 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:71: AND
- {
- mAND();
-
- }
- break;
- case 14 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:75: NOT
- {
- mNOT();
-
- }
- break;
- case 15 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:79: IN
- {
- mIN();
-
- }
- break;
- case 16 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:82: LIKE
- {
- mLIKE();
-
- }
- break;
- case 17 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:87: IS
- {
- mIS();
-
- }
- break;
- case 18 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:90: NULL
- {
- mNULL();
-
- }
- break;
- case 19 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:95: ANY
- {
- mANY();
-
- }
- break;
- case 20 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:99: CONTAINS
- {
- mCONTAINS();
-
- }
- break;
- case 21 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:108: IN_FOLDER
- {
- mIN_FOLDER();
-
- }
- break;
- case 22 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:118: IN_TREE
- {
- mIN_TREE();
-
- }
- break;
- case 23 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:126: ORDER
- {
- mORDER();
-
- }
- break;
- case 24 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:132: BY
- {
- mBY();
-
- }
- break;
- case 25 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:135: ASC
- {
- mASC();
-
- }
- break;
- case 26 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:139: DESC
- {
- mDESC();
-
- }
- break;
- case 27 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:144: SCORE
- {
- mSCORE();
-
- }
- break;
- case 28 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:150: LPAREN
- {
- mLPAREN();
-
- }
- break;
- case 29 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:157: RPAREN
- {
- mRPAREN();
-
- }
- break;
- case 30 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:164: STAR
- {
- mSTAR();
-
- }
- break;
- case 31 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:169: COMMA
- {
- mCOMMA();
-
- }
- break;
- case 32 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:175: DOTSTAR
- {
- mDOTSTAR();
-
- }
- break;
- case 33 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:183: DOT
- {
- mDOT();
-
- }
- break;
- case 34 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:187: DOTDOT
- {
- mDOTDOT();
-
- }
- break;
- case 35 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:194: EQUALS
- {
- mEQUALS();
-
- }
- break;
- case 36 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:201: TILDA
- {
- mTILDA();
-
- }
- break;
- case 37 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:207: NOTEQUALS
- {
- mNOTEQUALS();
-
- }
- break;
- case 38 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:217: GREATERTHAN
- {
- mGREATERTHAN();
-
- }
- break;
- case 39 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:229: LESSTHAN
- {
- mLESSTHAN();
-
- }
- break;
- case 40 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:238: GREATERTHANOREQUALS
- {
- mGREATERTHANOREQUALS();
-
- }
- break;
- case 41 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:258: LESSTHANOREQUALS
- {
- mLESSTHANOREQUALS();
-
- }
- break;
- case 42 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:275: COLON
- {
- mCOLON();
-
- }
- break;
- case 43 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:281: SINGLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:10: SINGLE_QUOTE
{
mSINGLE_QUOTE();
}
break;
- case 44 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:294: DOUBLE_QUOTE
- {
- mDOUBLE_QUOTE();
-
- }
- break;
- case 45 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:307: QUOTED_STRING
+ case 2 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:23: QUOTED_STRING
{
mQUOTED_STRING();
+ }
+ break;
+ case 3 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:37: SELECT
+ {
+ mSELECT();
+
+ }
+ break;
+ case 4 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:44: AS
+ {
+ mAS();
+
+ }
+ break;
+ case 5 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:47: UPPER
+ {
+ mUPPER();
+
+ }
+ break;
+ case 6 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:53: LOWER
+ {
+ mLOWER();
+
+ }
+ break;
+ case 7 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:59: FROM
+ {
+ mFROM();
+
+ }
+ break;
+ case 8 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:64: JOIN
+ {
+ mJOIN();
+
+ }
+ break;
+ case 9 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:69: INNER
+ {
+ mINNER();
+
+ }
+ break;
+ case 10 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:75: LEFT
+ {
+ mLEFT();
+
+ }
+ break;
+ case 11 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:80: OUTER
+ {
+ mOUTER();
+
+ }
+ break;
+ case 12 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:86: ON
+ {
+ mON();
+
+ }
+ break;
+ case 13 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:89: WHERE
+ {
+ mWHERE();
+
+ }
+ break;
+ case 14 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:95: OR
+ {
+ mOR();
+
+ }
+ break;
+ case 15 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:98: AND
+ {
+ mAND();
+
+ }
+ break;
+ case 16 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:102: NOT
+ {
+ mNOT();
+
+ }
+ break;
+ case 17 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:106: IN
+ {
+ mIN();
+
+ }
+ break;
+ case 18 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:109: LIKE
+ {
+ mLIKE();
+
+ }
+ break;
+ case 19 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:114: IS
+ {
+ mIS();
+
+ }
+ break;
+ case 20 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:117: NULL
+ {
+ mNULL();
+
+ }
+ break;
+ case 21 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:122: ANY
+ {
+ mANY();
+
+ }
+ break;
+ case 22 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:126: CONTAINS
+ {
+ mCONTAINS();
+
+ }
+ break;
+ case 23 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:135: IN_FOLDER
+ {
+ mIN_FOLDER();
+
+ }
+ break;
+ case 24 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:145: IN_TREE
+ {
+ mIN_TREE();
+
+ }
+ break;
+ case 25 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:153: ORDER
+ {
+ mORDER();
+
+ }
+ break;
+ case 26 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:159: BY
+ {
+ mBY();
+
+ }
+ break;
+ case 27 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:162: ASC
+ {
+ mASC();
+
+ }
+ break;
+ case 28 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:166: DESC
+ {
+ mDESC();
+
+ }
+ break;
+ case 29 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:171: SCORE
+ {
+ mSCORE();
+
+ }
+ break;
+ case 30 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:177: LPAREN
+ {
+ mLPAREN();
+
+ }
+ break;
+ case 31 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:184: RPAREN
+ {
+ mRPAREN();
+
+ }
+ break;
+ case 32 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:191: STAR
+ {
+ mSTAR();
+
+ }
+ break;
+ case 33 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:196: COMMA
+ {
+ mCOMMA();
+
+ }
+ break;
+ case 34 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:202: DOTSTAR
+ {
+ mDOTSTAR();
+
+ }
+ break;
+ case 35 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:210: DOT
+ {
+ mDOT();
+
+ }
+ break;
+ case 36 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:214: DOTDOT
+ {
+ mDOTDOT();
+
+ }
+ break;
+ case 37 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:221: EQUALS
+ {
+ mEQUALS();
+
+ }
+ break;
+ case 38 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:228: TILDA
+ {
+ mTILDA();
+
+ }
+ break;
+ case 39 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:234: NOTEQUALS
+ {
+ mNOTEQUALS();
+
+ }
+ break;
+ case 40 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:244: GREATERTHAN
+ {
+ mGREATERTHAN();
+
+ }
+ break;
+ case 41 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:256: LESSTHAN
+ {
+ mLESSTHAN();
+
+ }
+ break;
+ case 42 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:265: GREATERTHANOREQUALS
+ {
+ mGREATERTHANOREQUALS();
+
+ }
+ break;
+ case 43 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:285: LESSTHANOREQUALS
+ {
+ mLESSTHANOREQUALS();
+
+ }
+ break;
+ case 44 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:302: COLON
+ {
+ mCOLON();
+
+ }
+ break;
+ case 45 :
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:308: DOUBLE_QUOTE
+ {
+ mDOUBLE_QUOTE();
+
}
break;
case 46 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:321: DECIMAL_INTEGER_LITERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:321: DECIMAL_INTEGER_LITERAL
{
mDECIMAL_INTEGER_LITERAL();
}
break;
case 47 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:345: FLOATING_POINT_LITERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:345: FLOATING_POINT_LITERAL
{
mFLOATING_POINT_LITERAL();
}
break;
case 48 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:368: ID
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:368: ID
{
mID();
}
break;
case 49 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:1:371: WS
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:1:371: WS
{
mWS();
@@ -3081,91 +3081,93 @@ public class CMISLexer extends Lexer {
this.transition = DFA9_transition;
}
public String getDescription() {
- return "570:1: FLOATING_POINT_LITERAL : ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT );";
+ return "584:1: FLOATING_POINT_LITERAL : ( ( DIGIT )+ DOT ( DIGIT )* ( EXPONENT )? | DOT ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT );";
}
}
static final String DFA16_eotS =
- "\1\uffff\15\35\4\uffff\1\66\2\uffff\1\72\1\74\1\uffff\1\75\2\uffff"+
- "\2\32\2\uffff\2\35\1\103\7\35\1\116\1\117\1\35\1\121\1\123\4\35"+
- "\1\130\1\35\13\uffff\1\32\2\35\1\134\1\uffff\1\135\1\136\10\35\2"+
- "\uffff\1\35\1\uffff\1\35\1\uffff\1\35\1\153\2\35\1\uffff\3\35\3"+
- "\uffff\2\35\1\163\1\164\1\165\1\166\6\35\1\uffff\1\175\1\35\1\177"+
- "\1\35\1\u0081\1\u0082\1\u0083\4\uffff\1\u0084\2\35\1\u0087\1\u0088"+
- "\1\u0089\1\uffff\1\35\1\uffff\1\u008b\4\uffff\2\35\3\uffff\1\35"+
- "\1\uffff\1\35\1\u0090\2\35\1\uffff\1\u0093\1\u0094\2\uffff";
+ "\1\uffff\1\37\15\35\4\uffff\1\70\2\uffff\1\74\1\76\3\uffff\2\32"+
+ "\4\uffff\2\35\1\103\7\35\1\116\1\117\1\35\1\121\1\123\4\35\1\130"+
+ "\1\35\11\uffff\1\32\2\35\1\134\1\uffff\1\135\1\136\10\35\2\uffff"+
+ "\1\35\1\uffff\1\35\1\uffff\1\35\1\153\2\35\1\uffff\3\35\3\uffff"+
+ "\2\35\1\163\1\164\1\165\1\166\6\35\1\uffff\1\175\1\35\1\177\1\35"+
+ "\1\u0081\1\u0082\1\u0083\4\uffff\1\u0084\2\35\1\u0087\1\u0088\1"+
+ "\u0089\1\uffff\1\35\1\uffff\1\u008b\4\uffff\2\35\3\uffff\1\35\1"+
+ "\uffff\1\35\1\u0090\2\35\1\uffff\1\u0093\1\u0094\2\uffff";
static final String DFA16_eofS =
"\u0095\uffff";
static final String DFA16_minS =
- "\1\11\1\103\1\116\1\120\1\105\1\122\1\117\2\116\1\110\2\117\1\131"+
- "\1\105\4\uffff\1\52\2\uffff\2\75\1\uffff\1\0\2\uffff\2\56\2\uffff"+
- "\1\114\1\117\1\43\1\104\1\120\1\127\1\106\1\113\1\117\1\111\2\43"+
- "\1\124\2\43\1\105\1\124\1\114\1\116\1\43\1\123\13\uffff\1\56\1\105"+
- "\1\122\1\43\1\uffff\2\43\2\105\1\124\1\105\1\115\1\116\1\105\1\106"+
- "\2\uffff\1\105\1\uffff\1\105\1\uffff\1\122\1\43\1\114\1\124\1\uffff"+
- "\2\103\1\105\3\uffff\2\122\4\43\1\122\1\117\3\122\1\105\1\uffff"+
- "\1\43\1\101\1\43\1\124\3\43\4\uffff\1\43\1\114\1\105\3\43\1\uffff"+
- "\1\111\1\uffff\1\43\4\uffff\1\104\1\105\3\uffff\1\116\1\uffff\1"+
- "\105\1\43\1\123\1\122\1\uffff\2\43\2\uffff";
+ "\1\11\1\0\1\103\1\116\1\120\1\105\1\122\1\117\2\116\1\110\2\117"+
+ "\1\131\1\105\4\uffff\1\52\2\uffff\2\75\3\uffff\2\56\4\uffff\1\114"+
+ "\1\117\1\43\1\104\1\120\1\127\1\106\1\113\1\117\1\111\2\43\1\124"+
+ "\2\43\1\105\1\124\1\114\1\116\1\43\1\123\11\uffff\1\56\1\105\1\122"+
+ "\1\43\1\uffff\2\43\2\105\1\124\1\105\1\115\1\116\1\105\1\106\2\uffff"+
+ "\1\105\1\uffff\1\105\1\uffff\1\122\1\43\1\114\1\124\1\uffff\2\103"+
+ "\1\105\3\uffff\2\122\4\43\1\122\1\117\3\122\1\105\1\uffff\1\43\1"+
+ "\101\1\43\1\124\3\43\4\uffff\1\43\1\114\1\105\3\43\1\uffff\1\111"+
+ "\1\uffff\1\43\4\uffff\1\104\1\105\3\uffff\1\116\1\uffff\1\105\1"+
+ "\43\1\123\1\122\1\uffff\2\43\2\uffff";
static final String DFA16_maxS =
- "\1\176\1\145\1\163\1\160\1\157\1\162\1\157\1\163\1\165\1\150\1"+
- "\165\1\157\1\171\1\145\4\uffff\1\71\2\uffff\1\76\1\75\1\uffff\1"+
- "\ufffe\2\uffff\2\145\2\uffff\1\154\1\157\1\172\1\171\1\160\1\167"+
- "\1\146\1\153\1\157\1\151\2\172\1\164\2\172\1\145\1\164\1\154\1\156"+
- "\1\172\1\163\13\uffff\2\145\1\162\1\172\1\uffff\2\172\2\145\1\164"+
- "\1\145\1\155\1\156\1\145\1\164\2\uffff\1\145\1\uffff\1\145\1\uffff"+
- "\1\162\1\172\1\154\1\164\1\uffff\2\143\1\145\3\uffff\2\162\4\172"+
- "\1\162\1\157\3\162\1\145\1\uffff\1\172\1\141\1\172\1\164\3\172\4"+
- "\uffff\1\172\1\154\1\145\3\172\1\uffff\1\151\1\uffff\1\172\4\uffff"+
- "\1\144\1\145\3\uffff\1\156\1\uffff\1\145\1\172\1\163\1\162\1\uffff"+
- "\2\172\2\uffff";
+ "\1\176\1\ufffe\1\145\1\163\1\160\1\157\1\162\1\157\1\163\1\165"+
+ "\1\150\1\165\1\157\1\171\1\145\4\uffff\1\71\2\uffff\1\76\1\75\3"+
+ "\uffff\2\145\4\uffff\1\154\1\157\1\172\1\171\1\160\1\167\1\146\1"+
+ "\153\1\157\1\151\2\172\1\164\2\172\1\145\1\164\1\154\1\156\1\172"+
+ "\1\163\11\uffff\2\145\1\162\1\172\1\uffff\2\172\2\145\1\164\1\145"+
+ "\1\155\1\156\1\145\1\164\2\uffff\1\145\1\uffff\1\145\1\uffff\1\162"+
+ "\1\172\1\154\1\164\1\uffff\2\143\1\145\3\uffff\2\162\4\172\1\162"+
+ "\1\157\3\162\1\145\1\uffff\1\172\1\141\1\172\1\164\3\172\4\uffff"+
+ "\1\172\1\154\1\145\3\172\1\uffff\1\151\1\uffff\1\172\4\uffff\1\144"+
+ "\1\145\3\uffff\1\156\1\uffff\1\145\1\172\1\163\1\162\1\uffff\2\172"+
+ "\2\uffff";
static final String DFA16_acceptS =
- "\16\uffff\1\34\1\35\1\36\1\37\1\uffff\1\43\1\44\2\uffff\1\52\1"+
- "\uffff\1\54\1\56\2\uffff\1\60\1\61\25\uffff\1\40\1\42\1\41\1\57"+
- "\1\45\1\51\1\47\1\50\1\46\1\53\1\55\4\uffff\1\2\12\uffff\1\17\1"+
- "\21\1\uffff\1\12\1\uffff\1\14\4\uffff\1\30\3\uffff\1\31\1\15\1\23"+
- "\14\uffff\1\16\7\uffff\1\10\1\20\1\5\1\6\6\uffff\1\22\1\uffff\1"+
- "\32\1\uffff\1\33\1\3\1\4\1\7\2\uffff\1\11\1\27\1\13\1\uffff\1\1"+
- "\4\uffff\1\26\2\uffff\1\24\1\25";
+ "\17\uffff\1\36\1\37\1\40\1\41\1\uffff\1\45\1\46\2\uffff\1\54\1"+
+ "\55\1\56\2\uffff\1\60\1\61\1\1\1\2\25\uffff\1\42\1\44\1\43\1\57"+
+ "\1\47\1\53\1\51\1\52\1\50\4\uffff\1\4\12\uffff\1\21\1\23\1\uffff"+
+ "\1\14\1\uffff\1\16\4\uffff\1\32\3\uffff\1\33\1\17\1\25\14\uffff"+
+ "\1\20\7\uffff\1\12\1\22\1\7\1\10\6\uffff\1\24\1\uffff\1\34\1\uffff"+
+ "\1\35\1\5\1\6\1\11\2\uffff\1\13\1\31\1\15\1\uffff\1\3\4\uffff\1"+
+ "\30\2\uffff\1\26\1\27";
static final String DFA16_specialS =
"\u0095\uffff}>";
static final String[] DFA16_transitionS = {
- "\2\36\2\uffff\1\36\22\uffff\1\36\1\uffff\1\31\4\uffff\1\30"+
- "\1\16\1\17\1\20\1\32\1\21\1\32\1\22\1\uffff\1\33\11\34\1\27"+
- "\1\uffff\1\25\1\23\1\26\2\uffff\1\2\1\14\1\13\1\15\1\35\1\5"+
- "\2\35\1\7\1\6\1\35\1\4\1\35\1\12\1\10\3\35\1\1\1\35\1\3\1\35"+
- "\1\11\3\35\4\uffff\1\35\1\uffff\1\2\1\14\1\13\1\15\1\35\1\5"+
- "\2\35\1\7\1\6\1\35\1\4\1\35\1\12\1\10\3\35\1\1\1\35\1\3\1\35"+
- "\1\11\3\35\3\uffff\1\24",
- "\1\40\1\uffff\1\37\35\uffff\1\40\1\uffff\1\37",
- "\1\42\4\uffff\1\41\32\uffff\1\42\4\uffff\1\41",
- "\1\43\37\uffff\1\43",
- "\1\45\3\uffff\1\46\5\uffff\1\44\25\uffff\1\45\3\uffff\1\46"+
- "\5\uffff\1\44",
- "\1\47\37\uffff\1\47",
- "\1\50\37\uffff\1\50",
- "\1\51\4\uffff\1\52\32\uffff\1\51\4\uffff\1\52",
- "\1\54\3\uffff\1\55\2\uffff\1\53\30\uffff\1\54\3\uffff\1\55"+
- "\2\uffff\1\53",
- "\1\56\37\uffff\1\56",
- "\1\57\5\uffff\1\60\31\uffff\1\57\5\uffff\1\60",
- "\1\61\37\uffff\1\61",
- "\1\62\37\uffff\1\62",
+ "\2\36\2\uffff\1\36\22\uffff\1\36\1\uffff\1\31\4\uffff\1\1\1"+
+ "\17\1\20\1\21\1\32\1\22\1\32\1\23\1\uffff\1\33\11\34\1\30\1"+
+ "\uffff\1\26\1\24\1\27\2\uffff\1\3\1\15\1\14\1\16\1\35\1\6\2"+
+ "\35\1\10\1\7\1\35\1\5\1\35\1\13\1\11\3\35\1\2\1\35\1\4\1\35"+
+ "\1\12\3\35\4\uffff\1\35\1\uffff\1\3\1\15\1\14\1\16\1\35\1\6"+
+ "\2\35\1\10\1\7\1\35\1\5\1\35\1\13\1\11\3\35\1\2\1\35\1\4\1\35"+
+ "\1\12\3\35\3\uffff\1\25",
+ "\uffff\40",
+ "\1\42\1\uffff\1\41\35\uffff\1\42\1\uffff\1\41",
+ "\1\44\4\uffff\1\43\32\uffff\1\44\4\uffff\1\43",
+ "\1\45\37\uffff\1\45",
+ "\1\47\3\uffff\1\50\5\uffff\1\46\25\uffff\1\47\3\uffff\1\50"+
+ "\5\uffff\1\46",
+ "\1\51\37\uffff\1\51",
+ "\1\52\37\uffff\1\52",
+ "\1\53\4\uffff\1\54\32\uffff\1\53\4\uffff\1\54",
+ "\1\56\3\uffff\1\57\2\uffff\1\55\30\uffff\1\56\3\uffff\1\57"+
+ "\2\uffff\1\55",
+ "\1\60\37\uffff\1\60",
+ "\1\61\5\uffff\1\62\31\uffff\1\61\5\uffff\1\62",
"\1\63\37\uffff\1\63",
+ "\1\64\37\uffff\1\64",
+ "\1\65\37\uffff\1\65",
"",
"",
"",
"",
- "\1\64\3\uffff\1\65\1\uffff\12\67",
+ "\1\66\3\uffff\1\67\1\uffff\12\71",
"",
"",
- "\1\71\1\70",
- "\1\73",
- "",
- "\uffff\76",
+ "\1\73\1\72",
+ "\1\75",
+ "",
+ "",
+ "",
+ "\1\71\1\uffff\12\71\13\uffff\1\71\37\uffff\1\71",
+ "\1\71\1\uffff\12\77\13\uffff\1\71\37\uffff\1\71",
"",
"",
- "\1\67\1\uffff\12\67\13\uffff\1\67\37\uffff\1\67",
- "\1\67\1\uffff\12\77\13\uffff\1\67\37\uffff\1\67",
"",
"",
"\1\100\37\uffff\1\100",
@@ -3204,9 +3206,7 @@ public class CMISLexer extends Lexer {
"",
"",
"",
- "",
- "",
- "\1\67\1\uffff\12\77\13\uffff\1\67\37\uffff\1\67",
+ "\1\71\1\uffff\12\77\13\uffff\1\71\37\uffff\1\71",
"\1\132\37\uffff\1\132",
"\1\133\37\uffff\1\133",
"\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+
@@ -3345,7 +3345,7 @@ public class CMISLexer extends Lexer {
this.transition = DFA16_transition;
}
public String getDescription() {
- return "1:1: Tokens : ( 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 | LPAREN | RPAREN | STAR | COMMA | DOTSTAR | DOT | DOTDOT | EQUALS | TILDA | NOTEQUALS | GREATERTHAN | LESSTHAN | GREATERTHANOREQUALS | LESSTHANOREQUALS | COLON | SINGLE_QUOTE | DOUBLE_QUOTE | QUOTED_STRING | DECIMAL_INTEGER_LITERAL | FLOATING_POINT_LITERAL | ID | WS );";
+ return "1:1: Tokens : ( SINGLE_QUOTE | QUOTED_STRING | 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 | LPAREN | RPAREN | STAR | COMMA | DOTSTAR | DOT | DOTDOT | EQUALS | TILDA | NOTEQUALS | GREATERTHAN | LESSTHAN | GREATERTHANOREQUALS | LESSTHANOREQUALS | COLON | DOUBLE_QUOTE | DECIMAL_INTEGER_LITERAL | FLOATING_POINT_LITERAL | ID | WS );";
}
}
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 c7c78e2cc3..ed45808479 100644
--- a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java
+++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.1b1 W:\\workspace-cmis\\ANTLR\\CMIS.g 2008-07-15 16:24:39
+// $ANTLR 3.1b1 W:\\workspace-cmis2\\ANTLR\\CMIS.g 2008-07-21 10:14:45
package org.alfresco.repo.search.impl.parsers;
import org.antlr.runtime.*;
@@ -12,7 +12,7 @@ import org.antlr.runtime.tree.*;
public class CMISParser extends Parser {
public static final String[] tokenNames = new String[] {
- "", "", "", "", "QUERY", "ALL_COLUMNS", "COLUMN", "COLUMNS", "COLUMN_REF", "QUALIFIER", "FUNCTION", "SOURCE", "TABLE", "TABLE_REF", "PARAMETER", "CONJUNCTION", "DISJUNCTION", "NEGATION", "PRED_COMPARISON", "PRED_IN", "PRED_EXISTS", "PRED_LIKE", "PRED_FTS", "LIST", "PRED_CHILD", "PRED_DESCENDANT", "SORT_SPECIFICATION", "NUMERIC_LITERAL", "STRING_LITERAL", "SELECT", "STAR", "COMMA", "AS", "DOTSTAR", "DOT", "LPAREN", "RPAREN", "FROM", "JOIN", "INNER", "LEFT", "OUTER", "ON", "EQUALS", "WHERE", "OR", "AND", "NOT", "NOTEQUALS", "LESSTHAN", "GREATERTHAN", "LESSTHANOREQUALS", "GREATERTHANOREQUALS", "IN", "LIKE", "IS", "NULL", "ANY", "CONTAINS", "IN_FOLDER", "IN_TREE", "ORDER", "BY", "ASC", "DESC", "COLON", "QUOTED_STRING", "ID", "DOUBLE_QUOTE", "FLOATING_POINT_LITERAL", "DECIMAL_INTEGER_LITERAL", "UPPER", "LOWER", "SCORE", "DOTDOT", "TILDA", "SINGLE_QUOTE", "ESCAPED_SINGLE_QUOTE", "PLUS", "MINUS", "DECIMAL_NUMERAL", "DIGIT", "EXPONENT", "WS", "ZERO_DIGIT", "NON_ZERO_DIGIT", "E", "SIGNED_INTEGER"
+ "", "", "", "", "QUERY", "ALL_COLUMNS", "COLUMN", "COLUMNS", "COLUMN_REF", "QUALIFIER", "FUNCTION", "SOURCE", "TABLE", "TABLE_REF", "PARAMETER", "CONJUNCTION", "DISJUNCTION", "NEGATION", "PRED_COMPARISON", "PRED_IN", "PRED_EXISTS", "PRED_LIKE", "PRED_FTS", "LIST", "PRED_CHILD", "PRED_DESCENDANT", "SORT_SPECIFICATION", "NUMERIC_LITERAL", "STRING_LITERAL", "SELECT", "STAR", "COMMA", "AS", "DOTSTAR", "DOT", "LPAREN", "RPAREN", "FROM", "JOIN", "INNER", "LEFT", "OUTER", "ON", "EQUALS", "WHERE", "OR", "AND", "NOT", "NOTEQUALS", "LESSTHAN", "GREATERTHAN", "LESSTHANOREQUALS", "GREATERTHANOREQUALS", "IN", "LIKE", "IS", "NULL", "ANY", "CONTAINS", "IN_FOLDER", "IN_TREE", "ORDER", "BY", "ASC", "DESC", "COLON", "QUOTED_STRING", "ID", "DOUBLE_QUOTE", "FLOATING_POINT_LITERAL", "DECIMAL_INTEGER_LITERAL", "UPPER", "LOWER", "SCORE", "SINGLE_QUOTE", "ESCAPED_SINGLE_QUOTE", "DOTDOT", "TILDA", "PLUS", "MINUS", "DECIMAL_NUMERAL", "DIGIT", "EXPONENT", "WS", "ZERO_DIGIT", "NON_ZERO_DIGIT", "E", "SIGNED_INTEGER"
};
public static final int FUNCTION=10;
public static final int WHERE=44;
@@ -27,7 +27,7 @@ public class CMISParser extends Parser {
public static final int CONTAINS=58;
public static final int TABLE=12;
public static final int SOURCE=11;
- public static final int DOTDOT=74;
+ public static final int DOTDOT=76;
public static final int EQUALS=43;
public static final int NOT=47;
public static final int ID=67;
@@ -36,9 +36,9 @@ public class CMISParser extends Parser {
public static final int LPAREN=35;
public static final int LESSTHANOREQUALS=51;
public static final int AS=32;
- public static final int SINGLE_QUOTE=76;
+ public static final int SINGLE_QUOTE=74;
public static final int RPAREN=36;
- public static final int TILDA=75;
+ public static final int TILDA=77;
public static final int PRED_LIKE=21;
public static final int STRING_LITERAL=28;
public static final int IN=53;
@@ -98,7 +98,7 @@ public class CMISParser extends Parser {
public static final int FROM=37;
public static final int UPPER=71;
public static final int PRED_IN=19;
- public static final int ESCAPED_SINGLE_QUOTE=77;
+ public static final int ESCAPED_SINGLE_QUOTE=75;
// delegates
// delegators
@@ -121,7 +121,7 @@ public class CMISParser extends Parser {
}
public String[] getTokenNames() { return CMISParser.tokenNames; }
- public String getGrammarFileName() { return "W:\\workspace-cmis\\ANTLR\\CMIS.g"; }
+ public String getGrammarFileName() { return "W:\\workspace-cmis2\\ANTLR\\CMIS.g"; }
private Stack paraphrases = new Stack();
@@ -181,7 +181,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start query
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:142:1: query : SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF -> ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:142:1: query : SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF -> ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? ) ;
public final CMISParser.query_return query() throws RecognitionException {
CMISParser.query_return retval = new CMISParser.query_return();
retval.start = input.LT(1);
@@ -208,8 +208,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_selectList=new RewriteRuleSubtreeStream(adaptor,"rule selectList");
RewriteRuleSubtreeStream stream_fromClause=new RewriteRuleSubtreeStream(adaptor,"rule fromClause");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:2: ( SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF -> ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:4: SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:2: ( SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF -> ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:4: SELECT selectList fromClause ( whereClause )? ( orderByClause )? EOF
{
SELECT1=(Token)match(input,SELECT,FOLLOW_SELECT_in_query172); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_SELECT.add(SELECT1);
@@ -226,7 +226,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_fromClause.add(fromClause3.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:33: ( whereClause )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:33: ( whereClause )?
int alt1=2;
int LA1_0 = input.LA(1);
@@ -235,7 +235,7 @@ public class CMISParser extends Parser {
}
switch (alt1) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:33: whereClause
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:33: whereClause
{
pushFollow(FOLLOW_whereClause_in_query178);
whereClause4=whereClause();
@@ -249,7 +249,7 @@ public class CMISParser extends Parser {
}
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:46: ( orderByClause )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:46: ( orderByClause )?
int alt2=2;
int LA2_0 = input.LA(1);
@@ -258,7 +258,7 @@ public class CMISParser extends Parser {
}
switch (alt2) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:149:46: orderByClause
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:149:46: orderByClause
{
pushFollow(FOLLOW_orderByClause_in_query181);
orderByClause5=orderByClause();
@@ -290,20 +290,20 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 150:3: -> ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:150:6: ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:150:6: ^( QUERY selectList fromClause ( whereClause )? ( orderByClause )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUERY, "QUERY"), root_1);
adaptor.addChild(root_1, stream_selectList.nextTree());
adaptor.addChild(root_1, stream_fromClause.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:150:36: ( whereClause )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:150:36: ( whereClause )?
if ( stream_whereClause.hasNext() ) {
adaptor.addChild(root_1, stream_whereClause.nextTree());
}
stream_whereClause.reset();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:150:49: ( orderByClause )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:150:49: ( orderByClause )?
if ( stream_orderByClause.hasNext() ) {
adaptor.addChild(root_1, stream_orderByClause.nextTree());
@@ -343,7 +343,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start selectList
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:154:1: selectList : ( STAR -> ^( ALL_COLUMNS ) | selectSubList ( COMMA selectSubList )* -> ^( COLUMNS ( selectSubList )+ ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:154:1: selectList : ( STAR -> ^( ALL_COLUMNS ) | selectSubList ( COMMA selectSubList )* -> ^( COLUMNS ( selectSubList )+ ) );
public final CMISParser.selectList_return selectList() throws RecognitionException {
CMISParser.selectList_return retval = new CMISParser.selectList_return();
retval.start = input.LT(1);
@@ -364,7 +364,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_selectSubList=new RewriteRuleSubtreeStream(adaptor,"rule selectSubList");
paraphrases.push("in select list");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:157:2: ( STAR -> ^( ALL_COLUMNS ) | selectSubList ( COMMA selectSubList )* -> ^( COLUMNS ( selectSubList )+ ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:157:2: ( STAR -> ^( ALL_COLUMNS ) | selectSubList ( COMMA selectSubList )* -> ^( COLUMNS ( selectSubList )+ ) )
int alt4=2;
int LA4_0 = input.LA(1);
@@ -383,7 +383,7 @@ public class CMISParser extends Parser {
}
switch (alt4) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:157:4: STAR
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:157:4: STAR
{
STAR7=(Token)match(input,STAR,FOLLOW_STAR_in_selectList233); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_STAR.add(STAR7);
@@ -403,7 +403,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 158:3: -> ^( ALL_COLUMNS )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:158:6: ^( ALL_COLUMNS )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:158:6: ^( ALL_COLUMNS )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ALL_COLUMNS, "ALL_COLUMNS"), root_1);
@@ -417,7 +417,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:159:5: selectSubList ( COMMA selectSubList )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:159:5: selectSubList ( COMMA selectSubList )*
{
pushFollow(FOLLOW_selectSubList_in_selectList249);
selectSubList8=selectSubList();
@@ -425,7 +425,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_selectSubList.add(selectSubList8.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:159:19: ( COMMA selectSubList )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:159:19: ( COMMA selectSubList )*
loop3:
do {
int alt3=2;
@@ -438,7 +438,7 @@ public class CMISParser extends Parser {
switch (alt3) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:159:21: COMMA selectSubList
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:159:21: COMMA selectSubList
{
COMMA9=(Token)match(input,COMMA,FOLLOW_COMMA_in_selectList253); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA9);
@@ -473,7 +473,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 160:3: -> ^( COLUMNS ( selectSubList )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:160:6: ^( COLUMNS ( selectSubList )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:160:6: ^( COLUMNS ( selectSubList )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMNS, "COLUMNS"), root_1);
@@ -525,7 +525,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start selectSubList
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:164:1: selectSubList : ( ( valueExpression )=> valueExpression ( ( AS )? columnName )? -> ^( COLUMN valueExpression ( columnName )? ) | qualifier DOTSTAR -> ^( ALL_COLUMNS qualifier ) | multiValuedColumnReference ->);
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:164:1: selectSubList : ( ( valueExpression )=> valueExpression ( ( AS )? columnName )? -> ^( COLUMN valueExpression ( columnName )? ) | qualifier DOTSTAR -> ^( ALL_COLUMNS qualifier ) | multiValuedColumnReference ->);
public final CMISParser.selectSubList_return selectSubList() throws RecognitionException {
CMISParser.selectSubList_return retval = new CMISParser.selectSubList_return();
retval.start = input.LT(1);
@@ -552,7 +552,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnName=new RewriteRuleSubtreeStream(adaptor,"rule columnName");
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:2: ( ( valueExpression )=> valueExpression ( ( AS )? columnName )? -> ^( COLUMN valueExpression ( columnName )? ) | qualifier DOTSTAR -> ^( ALL_COLUMNS qualifier ) | multiValuedColumnReference ->)
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:2: ( ( valueExpression )=> valueExpression ( ( AS )? columnName )? -> ^( COLUMN valueExpression ( columnName )? ) | qualifier DOTSTAR -> ^( ALL_COLUMNS qualifier ) | multiValuedColumnReference ->)
int alt7=3;
int LA7_0 = input.LA(1);
@@ -661,7 +661,7 @@ public class CMISParser extends Parser {
}
switch (alt7) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:4: ( valueExpression )=> valueExpression ( ( AS )? columnName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:4: ( valueExpression )=> valueExpression ( ( AS )? columnName )?
{
pushFollow(FOLLOW_valueExpression_in_selectSubList291);
valueExpression11=valueExpression();
@@ -669,7 +669,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_valueExpression.add(valueExpression11.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:40: ( ( AS )? columnName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:40: ( ( AS )? columnName )?
int alt6=2;
int LA6_0 = input.LA(1);
@@ -678,9 +678,9 @@ public class CMISParser extends Parser {
}
switch (alt6) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:42: ( AS )? columnName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:42: ( AS )? columnName
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:42: ( AS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:42: ( AS )?
int alt5=2;
int LA5_0 = input.LA(1);
@@ -689,7 +689,7 @@ public class CMISParser extends Parser {
}
switch (alt5) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:42: AS
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:42: AS
{
AS12=(Token)match(input,AS,FOLLOW_AS_in_selectSubList295); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_AS.add(AS12);
@@ -727,13 +727,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 166:3: -> ^( COLUMN valueExpression ( columnName )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:166:6: ^( COLUMN valueExpression ( columnName )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:166:6: ^( COLUMN valueExpression ( columnName )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN, "COLUMN"), root_1);
adaptor.addChild(root_1, stream_valueExpression.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:166:31: ( columnName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:166:31: ( columnName )?
if ( stream_columnName.hasNext() ) {
adaptor.addChild(root_1, stream_columnName.nextTree());
@@ -749,7 +749,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:167:4: qualifier DOTSTAR
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:167:4: qualifier DOTSTAR
{
pushFollow(FOLLOW_qualifier_in_selectSubList319);
qualifier14=qualifier();
@@ -775,7 +775,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 168:3: -> ^( ALL_COLUMNS qualifier )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:168:6: ^( ALL_COLUMNS qualifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:168:6: ^( ALL_COLUMNS qualifier )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ALL_COLUMNS, "ALL_COLUMNS"), root_1);
@@ -791,7 +791,7 @@ public class CMISParser extends Parser {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:169:4: multiValuedColumnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:169:4: multiValuedColumnReference
{
pushFollow(FOLLOW_multiValuedColumnReference_in_selectSubList337);
multiValuedColumnReference16=multiValuedColumnReference();
@@ -847,7 +847,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start valueExpression
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:173:1: valueExpression : ( columnReference -> columnReference | valueFunction -> valueFunction );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:173:1: valueExpression : ( columnReference -> columnReference | valueFunction -> valueFunction );
public final CMISParser.valueExpression_return valueExpression() throws RecognitionException {
CMISParser.valueExpression_return retval = new CMISParser.valueExpression_return();
retval.start = input.LT(1);
@@ -862,7 +862,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_valueFunction=new RewriteRuleSubtreeStream(adaptor,"rule valueFunction");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:174:2: ( columnReference -> columnReference | valueFunction -> valueFunction )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:174:2: ( columnReference -> columnReference | valueFunction -> valueFunction )
int alt8=2;
switch ( input.LA(1) ) {
case ID:
@@ -930,7 +930,7 @@ public class CMISParser extends Parser {
switch (alt8) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:174:4: columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:174:4: columnReference
{
pushFollow(FOLLOW_columnReference_in_valueExpression356);
columnReference17=columnReference();
@@ -961,7 +961,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:176:5: valueFunction
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:176:5: valueFunction
{
pushFollow(FOLLOW_valueFunction_in_valueExpression369);
valueFunction18=valueFunction();
@@ -1018,7 +1018,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start columnReference
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:180:1: columnReference : ( qualifier DOT )? columnName -> ^( COLUMN_REF columnName ( qualifier )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:180:1: columnReference : ( qualifier DOT )? columnName -> ^( COLUMN_REF columnName ( qualifier )? ) ;
public final CMISParser.columnReference_return columnReference() throws RecognitionException {
CMISParser.columnReference_return retval = new CMISParser.columnReference_return();
retval.start = input.LT(1);
@@ -1036,10 +1036,10 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnName=new RewriteRuleSubtreeStream(adaptor,"rule columnName");
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:181:2: ( ( qualifier DOT )? columnName -> ^( COLUMN_REF columnName ( qualifier )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:181:4: ( qualifier DOT )? columnName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:181:2: ( ( qualifier DOT )? columnName -> ^( COLUMN_REF columnName ( qualifier )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:181:4: ( qualifier DOT )? columnName
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:181:4: ( qualifier DOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:181:4: ( qualifier DOT )?
int alt9=2;
int LA9_0 = input.LA(1);
@@ -1078,7 +1078,7 @@ public class CMISParser extends Parser {
}
switch (alt9) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:181:6: qualifier DOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:181:6: qualifier DOT
{
pushFollow(FOLLOW_qualifier_in_columnReference392);
qualifier19=qualifier();
@@ -1116,13 +1116,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 182:3: -> ^( COLUMN_REF columnName ( qualifier )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:182:6: ^( COLUMN_REF columnName ( qualifier )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:182:6: ^( COLUMN_REF columnName ( qualifier )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_REF, "COLUMN_REF"), root_1);
adaptor.addChild(root_1, stream_columnName.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:182:30: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:182:30: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_1, stream_qualifier.nextTree());
@@ -1162,7 +1162,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start multiValuedColumnReference
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:189:1: multiValuedColumnReference : ( qualifier DOT )? multiValuedColumnName -> ^( COLUMN_REF multiValuedColumnName ( qualifier )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:189:1: multiValuedColumnReference : ( qualifier DOT )? multiValuedColumnName -> ^( COLUMN_REF multiValuedColumnName ( qualifier )? ) ;
public final CMISParser.multiValuedColumnReference_return multiValuedColumnReference() throws RecognitionException {
CMISParser.multiValuedColumnReference_return retval = new CMISParser.multiValuedColumnReference_return();
retval.start = input.LT(1);
@@ -1180,10 +1180,10 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_multiValuedColumnName=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnName");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:190:2: ( ( qualifier DOT )? multiValuedColumnName -> ^( COLUMN_REF multiValuedColumnName ( qualifier )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:190:10: ( qualifier DOT )? multiValuedColumnName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:190:2: ( ( qualifier DOT )? multiValuedColumnName -> ^( COLUMN_REF multiValuedColumnName ( qualifier )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:190:10: ( qualifier DOT )? multiValuedColumnName
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:190:10: ( qualifier DOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:190:10: ( qualifier DOT )?
int alt10=2;
int LA10_0 = input.LA(1);
@@ -1222,7 +1222,7 @@ public class CMISParser extends Parser {
}
switch (alt10) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:190:12: qualifier DOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:190:12: qualifier DOT
{
pushFollow(FOLLOW_qualifier_in_multiValuedColumnReference435);
qualifier22=qualifier();
@@ -1260,13 +1260,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 191:3: -> ^( COLUMN_REF multiValuedColumnName ( qualifier )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:191:6: ^( COLUMN_REF multiValuedColumnName ( qualifier )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:191:6: ^( COLUMN_REF multiValuedColumnName ( qualifier )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_REF, "COLUMN_REF"), root_1);
adaptor.addChild(root_1, stream_multiValuedColumnName.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:191:41: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:191:41: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_1, stream_qualifier.nextTree());
@@ -1306,7 +1306,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start valueFunction
- // W:\\workspace-cmis\\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 ( functionArgument )* ) ;
public final CMISParser.valueFunction_return valueFunction() throws RecognitionException {
CMISParser.valueFunction_return retval = new CMISParser.valueFunction_return();
retval.start = input.LT(1);
@@ -1327,8 +1327,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_keyWordOrId=new RewriteRuleSubtreeStream(adaptor,"rule keyWordOrId");
RewriteRuleSubtreeStream stream_functionArgument=new RewriteRuleSubtreeStream(adaptor,"rule functionArgument");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:195:2: (functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName ( functionArgument )* ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:195:4: functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:2: (functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN -> ^( FUNCTION $functionName ( functionArgument )* ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:4: functionName= keyWordOrId LPAREN ( functionArgument )* RPAREN
{
pushFollow(FOLLOW_keyWordOrId_in_valueFunction470);
functionName=keyWordOrId();
@@ -1339,7 +1339,7 @@ public class CMISParser extends Parser {
LPAREN25=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_valueFunction472); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN25);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:195:36: ( functionArgument )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:36: ( functionArgument )*
loop11:
do {
int alt11=2;
@@ -1352,7 +1352,7 @@ public class CMISParser extends Parser {
switch (alt11) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:195:36: functionArgument
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:195:36: functionArgument
{
pushFollow(FOLLOW_functionArgument_in_valueFunction474);
functionArgument26=functionArgument();
@@ -1388,13 +1388,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 196:3: -> ^( FUNCTION $functionName ( functionArgument )* )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:196:6: ^( FUNCTION $functionName ( functionArgument )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:6: ^( FUNCTION $functionName ( functionArgument )* )
{
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-cmis\\ANTLR\\CMIS.g:196:31: ( functionArgument )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:196:31: ( functionArgument )*
while ( stream_functionArgument.hasNext() ) {
adaptor.addChild(root_1, stream_functionArgument.nextTree());
@@ -1434,7 +1434,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start functionArgument
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:199:1: functionArgument : ( qualifier DOT columnName -> ^( COLUMN_REF columnName qualifier ) | identifier | literalOrParameterName );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:199:1: functionArgument : ( qualifier DOT columnName -> ^( COLUMN_REF columnName qualifier ) | identifier | literalOrParameterName );
public final CMISParser.functionArgument_return functionArgument() throws RecognitionException {
CMISParser.functionArgument_return retval = new CMISParser.functionArgument_return();
retval.start = input.LT(1);
@@ -1456,7 +1456,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnName=new RewriteRuleSubtreeStream(adaptor,"rule columnName");
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:200:5: ( qualifier DOT columnName -> ^( COLUMN_REF columnName qualifier ) | identifier | literalOrParameterName )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:200:5: ( qualifier DOT columnName -> ^( COLUMN_REF columnName qualifier ) | identifier | literalOrParameterName )
int alt12=3;
switch ( input.LA(1) ) {
case ID:
@@ -1565,7 +1565,7 @@ public class CMISParser extends Parser {
switch (alt12) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:200:9: qualifier DOT columnName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:200:9: qualifier DOT columnName
{
pushFollow(FOLLOW_qualifier_in_functionArgument508);
qualifier28=qualifier();
@@ -1597,7 +1597,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 201:5: -> ^( COLUMN_REF columnName qualifier )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:201:8: ^( COLUMN_REF columnName qualifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:201:8: ^( COLUMN_REF columnName qualifier )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_REF, "COLUMN_REF"), root_1);
@@ -1614,7 +1614,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:202:9: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:202:9: identifier
{
root_0 = (Object)adaptor.nil();
@@ -1628,7 +1628,7 @@ public class CMISParser extends Parser {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:203:9: literalOrParameterName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:203:9: literalOrParameterName
{
root_0 = (Object)adaptor.nil();
@@ -1668,7 +1668,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start qualifier
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:206:1: qualifier : ( ( tableName )=> tableName -> tableName | correlationName -> correlationName );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:206:1: qualifier : ( ( tableName )=> tableName -> tableName | correlationName -> correlationName );
public final CMISParser.qualifier_return qualifier() throws RecognitionException {
CMISParser.qualifier_return retval = new CMISParser.qualifier_return();
retval.start = input.LT(1);
@@ -1683,7 +1683,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_correlationName=new RewriteRuleSubtreeStream(adaptor,"rule correlationName");
RewriteRuleSubtreeStream stream_tableName=new RewriteRuleSubtreeStream(adaptor,"rule tableName");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:207:2: ( ( tableName )=> tableName -> tableName | correlationName -> correlationName )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:2: ( ( tableName )=> tableName -> tableName | correlationName -> correlationName )
int alt13=2;
int LA13_0 = input.LA(1);
@@ -1780,7 +1780,7 @@ public class CMISParser extends Parser {
}
switch (alt13) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:207:4: ( tableName )=> tableName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:4: ( tableName )=> tableName
{
pushFollow(FOLLOW_tableName_in_qualifier567);
tableName33=tableName();
@@ -1811,7 +1811,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:209:5: correlationName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:209:5: correlationName
{
pushFollow(FOLLOW_correlationName_in_qualifier579);
correlationName34=correlationName();
@@ -1868,7 +1868,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start fromClause
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:213:1: fromClause : FROM tableReference -> tableReference ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:213:1: fromClause : FROM tableReference -> tableReference ;
public final CMISParser.fromClause_return fromClause() throws RecognitionException {
CMISParser.fromClause_return retval = new CMISParser.fromClause_return();
retval.start = input.LT(1);
@@ -1884,8 +1884,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_tableReference=new RewriteRuleSubtreeStream(adaptor,"rule tableReference");
paraphrases.push("in from");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:216:2: ( FROM tableReference -> tableReference )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:216:4: FROM tableReference
+ // 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;
if ( state.backtracking==0 ) stream_FROM.add(FROM35);
@@ -1946,7 +1946,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start tableReference
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:220:1: tableReference : singleTable ( ( joinedTable )=> joinedTable )* -> ^( SOURCE singleTable ( joinedTable )* ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:220:1: tableReference : singleTable ( ( joinedTable )=> joinedTable )* -> ^( SOURCE singleTable ( joinedTable )* ) ;
public final CMISParser.tableReference_return tableReference() throws RecognitionException {
CMISParser.tableReference_return retval = new CMISParser.tableReference_return();
retval.start = input.LT(1);
@@ -1961,8 +1961,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_singleTable=new RewriteRuleSubtreeStream(adaptor,"rule singleTable");
RewriteRuleSubtreeStream stream_joinedTable=new RewriteRuleSubtreeStream(adaptor,"rule joinedTable");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:2: ( singleTable ( ( joinedTable )=> joinedTable )* -> ^( SOURCE singleTable ( joinedTable )* ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:4: singleTable ( ( joinedTable )=> joinedTable )*
+ // 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);
singleTable37=singleTable();
@@ -1970,7 +1970,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_singleTable.add(singleTable37.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:16: ( ( joinedTable )=> joinedTable )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:16: ( ( joinedTable )=> joinedTable )*
loop14:
do {
int alt14=2;
@@ -2013,7 +2013,7 @@ public class CMISParser extends Parser {
switch (alt14) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:17: ( joinedTable )=> joinedTable
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:17: ( joinedTable )=> joinedTable
{
pushFollow(FOLLOW_joinedTable_in_tableReference645);
joinedTable38=joinedTable();
@@ -2045,13 +2045,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 222:3: -> ^( SOURCE singleTable ( joinedTable )* )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:222:6: ^( SOURCE singleTable ( joinedTable )* )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:222:6: ^( SOURCE singleTable ( joinedTable )* )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SOURCE, "SOURCE"), root_1);
adaptor.addChild(root_1, stream_singleTable.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:222:27: ( joinedTable )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:222:27: ( joinedTable )*
while ( stream_joinedTable.hasNext() ) {
adaptor.addChild(root_1, stream_joinedTable.nextTree());
@@ -2091,7 +2091,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start singleTable
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:228:1: singleTable : ( tableName ( ( AS )? correlationName )? -> ^( TABLE_REF tableName ( correlationName )? ) | LPAREN joinedTables RPAREN -> ^( TABLE joinedTables ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:228:1: singleTable : ( tableName ( ( AS )? correlationName )? -> ^( TABLE_REF tableName ( correlationName )? ) | LPAREN joinedTables RPAREN -> ^( TABLE joinedTables ) );
public final CMISParser.singleTable_return singleTable() throws RecognitionException {
CMISParser.singleTable_return retval = new CMISParser.singleTable_return();
retval.start = input.LT(1);
@@ -2118,7 +2118,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_tableName=new RewriteRuleSubtreeStream(adaptor,"rule tableName");
RewriteRuleSubtreeStream stream_joinedTables=new RewriteRuleSubtreeStream(adaptor,"rule joinedTables");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:2: ( tableName ( ( AS )? correlationName )? -> ^( TABLE_REF tableName ( correlationName )? ) | LPAREN joinedTables RPAREN -> ^( TABLE joinedTables ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:2: ( tableName ( ( AS )? correlationName )? -> ^( TABLE_REF tableName ( correlationName )? ) | LPAREN joinedTables RPAREN -> ^( TABLE joinedTables ) )
int alt17=2;
int LA17_0 = input.LA(1);
@@ -2137,7 +2137,7 @@ public class CMISParser extends Parser {
}
switch (alt17) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:4: tableName ( ( AS )? correlationName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:4: tableName ( ( AS )? correlationName )?
{
pushFollow(FOLLOW_tableName_in_singleTable674);
tableName39=tableName();
@@ -2145,7 +2145,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableName.add(tableName39.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:14: ( ( AS )? correlationName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:14: ( ( AS )? correlationName )?
int alt16=2;
int LA16_0 = input.LA(1);
@@ -2154,9 +2154,9 @@ public class CMISParser extends Parser {
}
switch (alt16) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:16: ( AS )? correlationName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:16: ( AS )? correlationName
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:16: ( AS )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:16: ( AS )?
int alt15=2;
int LA15_0 = input.LA(1);
@@ -2165,7 +2165,7 @@ public class CMISParser extends Parser {
}
switch (alt15) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:229:16: AS
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:229:16: AS
{
AS40=(Token)match(input,AS,FOLLOW_AS_in_singleTable678); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_AS.add(AS40);
@@ -2203,13 +2203,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 230:3: -> ^( TABLE_REF tableName ( correlationName )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:230:6: ^( TABLE_REF tableName ( correlationName )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:230:6: ^( TABLE_REF tableName ( correlationName )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLE_REF, "TABLE_REF"), root_1);
adaptor.addChild(root_1, stream_tableName.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:230:28: ( correlationName )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:230:28: ( correlationName )?
if ( stream_correlationName.hasNext() ) {
adaptor.addChild(root_1, stream_correlationName.nextTree());
@@ -2225,7 +2225,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:231:4: LPAREN joinedTables RPAREN
+ // 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;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN42);
@@ -2254,7 +2254,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 232:3: -> ^( TABLE joinedTables )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:232:6: ^( TABLE joinedTables )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:232:6: ^( TABLE joinedTables )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLE, "TABLE"), root_1);
@@ -2296,7 +2296,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start joinedTable
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:235:1: joinedTable : ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )? -> ^( JOIN tableReference ( joinType )? ( joinSpecification )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:235:1: joinedTable : ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )? -> ^( JOIN tableReference ( joinType )? ( joinSpecification )? ) ;
public final CMISParser.joinedTable_return joinedTable() throws RecognitionException {
CMISParser.joinedTable_return retval = new CMISParser.joinedTable_return();
retval.start = input.LT(1);
@@ -2317,10 +2317,10 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_joinType=new RewriteRuleSubtreeStream(adaptor,"rule joinType");
RewriteRuleSubtreeStream stream_joinSpecification=new RewriteRuleSubtreeStream(adaptor,"rule joinSpecification");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:2: ( ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )? -> ^( JOIN tableReference ( joinType )? ( joinSpecification )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:4: ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:2: ( ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )? -> ^( JOIN tableReference ( joinType )? ( joinSpecification )? ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:4: ( joinType )? JOIN tableReference ( ( joinSpecification )=> joinSpecification )?
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:4: ( joinType )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:4: ( joinType )?
int alt18=2;
int LA18_0 = input.LA(1);
@@ -2329,7 +2329,7 @@ public class CMISParser extends Parser {
}
switch (alt18) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:4: joinType
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:4: joinType
{
pushFollow(FOLLOW_joinType_in_joinedTable728);
joinType45=joinType();
@@ -2352,7 +2352,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_tableReference.add(tableReference47.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:34: ( ( joinSpecification )=> joinSpecification )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:34: ( ( joinSpecification )=> joinSpecification )?
int alt19=2;
int LA19_0 = input.LA(1);
@@ -2365,7 +2365,7 @@ public class CMISParser extends Parser {
}
switch (alt19) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:35: ( joinSpecification )=> joinSpecification
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:35: ( joinSpecification )=> joinSpecification
{
pushFollow(FOLLOW_joinSpecification_in_joinedTable742);
joinSpecification48=joinSpecification();
@@ -2382,7 +2382,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: joinSpecification, tableReference, JOIN, joinType
+ // elements: JOIN, joinSpecification, tableReference, joinType
// token labels:
// rule labels: retval
// token list labels:
@@ -2394,19 +2394,19 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 237:3: -> ^( JOIN tableReference ( joinType )? ( joinSpecification )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:237:6: ^( JOIN tableReference ( joinType )? ( joinSpecification )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:237:6: ^( JOIN tableReference ( joinType )? ( joinSpecification )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_JOIN.nextNode(), root_1);
adaptor.addChild(root_1, stream_tableReference.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:237:28: ( joinType )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:237:28: ( joinType )?
if ( stream_joinType.hasNext() ) {
adaptor.addChild(root_1, stream_joinType.nextTree());
}
stream_joinType.reset();
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:237:38: ( joinSpecification )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:237:38: ( joinSpecification )?
if ( stream_joinSpecification.hasNext() ) {
adaptor.addChild(root_1, stream_joinSpecification.nextTree());
@@ -2446,7 +2446,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start joinedTables
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:241:1: joinedTables : singleTable ( joinedTable )+ -> ^( SOURCE singleTable ( joinedTable )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:241:1: joinedTables : singleTable ( joinedTable )+ -> ^( SOURCE singleTable ( joinedTable )+ ) ;
public final CMISParser.joinedTables_return joinedTables() throws RecognitionException {
CMISParser.joinedTables_return retval = new CMISParser.joinedTables_return();
retval.start = input.LT(1);
@@ -2461,8 +2461,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_singleTable=new RewriteRuleSubtreeStream(adaptor,"rule singleTable");
RewriteRuleSubtreeStream stream_joinedTable=new RewriteRuleSubtreeStream(adaptor,"rule joinedTable");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:242:2: ( singleTable ( joinedTable )+ -> ^( SOURCE singleTable ( joinedTable )+ ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:242:4: singleTable ( joinedTable )+
+ // 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);
singleTable49=singleTable();
@@ -2470,7 +2470,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_singleTable.add(singleTable49.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:242:16: ( joinedTable )+
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:242:16: ( joinedTable )+
int cnt20=0;
loop20:
do {
@@ -2484,7 +2484,7 @@ public class CMISParser extends Parser {
switch (alt20) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:242:16: joinedTable
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:242:16: joinedTable
{
pushFollow(FOLLOW_joinedTable_in_joinedTables775);
joinedTable50=joinedTable();
@@ -2509,7 +2509,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: joinedTable, singleTable
+ // elements: singleTable, joinedTable
// token labels:
// rule labels: retval
// token list labels:
@@ -2521,7 +2521,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 243:3: -> ^( SOURCE singleTable ( joinedTable )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:243:6: ^( SOURCE singleTable ( joinedTable )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:243:6: ^( SOURCE singleTable ( joinedTable )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SOURCE, "SOURCE"), root_1);
@@ -2569,7 +2569,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start joinType
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:246:1: joinType : ( INNER -> INNER | LEFT ( OUTER )? -> LEFT );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:246:1: joinType : ( INNER -> INNER | LEFT ( OUTER )? -> LEFT );
public final CMISParser.joinType_return joinType() throws RecognitionException {
CMISParser.joinType_return retval = new CMISParser.joinType_return();
retval.start = input.LT(1);
@@ -2588,7 +2588,7 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_LEFT=new RewriteRuleTokenStream(adaptor,"token LEFT");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:247:2: ( INNER -> INNER | LEFT ( OUTER )? -> LEFT )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:247:2: ( INNER -> INNER | LEFT ( OUTER )? -> LEFT )
int alt22=2;
int LA22_0 = input.LA(1);
@@ -2607,7 +2607,7 @@ public class CMISParser extends Parser {
}
switch (alt22) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:247:4: INNER
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:247:4: INNER
{
INNER51=(Token)match(input,INNER,FOLLOW_INNER_in_joinType802); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_INNER.add(INNER51);
@@ -2635,12 +2635,12 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:249:5: LEFT ( OUTER )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:5: LEFT ( OUTER )?
{
LEFT52=(Token)match(input,LEFT,FOLLOW_LEFT_in_joinType814); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LEFT.add(LEFT52);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:249:10: ( OUTER )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:10: ( OUTER )?
int alt21=2;
int LA21_0 = input.LA(1);
@@ -2649,7 +2649,7 @@ public class CMISParser extends Parser {
}
switch (alt21) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:249:10: OUTER
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:249:10: OUTER
{
OUTER53=(Token)match(input,OUTER,FOLLOW_OUTER_in_joinType816); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OUTER.add(OUTER53);
@@ -2709,7 +2709,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start joinSpecification
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:253:1: joinSpecification : ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN -> ^( ON $lhs EQUALS $rhs) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:253:1: joinSpecification : ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN -> ^( ON $lhs EQUALS $rhs) ;
public final CMISParser.joinSpecification_return joinSpecification() throws RecognitionException {
CMISParser.joinSpecification_return retval = new CMISParser.joinSpecification_return();
retval.start = input.LT(1);
@@ -2735,8 +2735,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:254:2: ( ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN -> ^( ON $lhs EQUALS $rhs) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:254:4: ON LPAREN lhs= columnReference EQUALS rhs= columnReference RPAREN
+ // 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;
if ( state.backtracking==0 ) stream_ON.add(ON54);
@@ -2765,7 +2765,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: rhs, EQUALS, lhs, ON
+ // elements: ON, EQUALS, rhs, lhs
// token labels:
// rule labels: retval, rhs, lhs
// token list labels:
@@ -2779,7 +2779,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 255:3: -> ^( ON $lhs EQUALS $rhs)
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:255:6: ^( ON $lhs EQUALS $rhs)
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:255:6: ^( ON $lhs EQUALS $rhs)
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_ON.nextNode(), root_1);
@@ -2821,7 +2821,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start whereClause
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:262:1: whereClause : WHERE searchOrCondition -> searchOrCondition ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:262:1: whereClause : WHERE searchOrCondition -> searchOrCondition ;
public final CMISParser.whereClause_return whereClause() throws RecognitionException {
CMISParser.whereClause_return retval = new CMISParser.whereClause_return();
retval.start = input.LT(1);
@@ -2837,8 +2837,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_searchOrCondition=new RewriteRuleSubtreeStream(adaptor,"rule searchOrCondition");
paraphrases.push("in where");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:265:2: ( WHERE searchOrCondition -> searchOrCondition )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:265:4: WHERE searchOrCondition
+ // 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;
if ( state.backtracking==0 ) stream_WHERE.add(WHERE58);
@@ -2899,7 +2899,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start searchOrCondition
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:269:1: searchOrCondition : searchAndCondition ( OR searchAndCondition )* -> ^( DISJUNCTION ( searchAndCondition )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:269:1: searchOrCondition : searchAndCondition ( OR searchAndCondition )* -> ^( DISJUNCTION ( searchAndCondition )+ ) ;
public final CMISParser.searchOrCondition_return searchOrCondition() throws RecognitionException {
CMISParser.searchOrCondition_return retval = new CMISParser.searchOrCondition_return();
retval.start = input.LT(1);
@@ -2916,8 +2916,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR");
RewriteRuleSubtreeStream stream_searchAndCondition=new RewriteRuleSubtreeStream(adaptor,"rule searchAndCondition");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:273:2: ( searchAndCondition ( OR searchAndCondition )* -> ^( DISJUNCTION ( searchAndCondition )+ ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:273:4: searchAndCondition ( OR searchAndCondition )*
+ // 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);
searchAndCondition60=searchAndCondition();
@@ -2925,7 +2925,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_searchAndCondition.add(searchAndCondition60.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:273:23: ( OR searchAndCondition )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:273:23: ( OR searchAndCondition )*
loop23:
do {
int alt23=2;
@@ -2938,7 +2938,7 @@ public class CMISParser extends Parser {
switch (alt23) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:273:24: OR searchAndCondition
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:273:24: OR searchAndCondition
{
OR61=(Token)match(input,OR,FOLLOW_OR_in_searchOrCondition925); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OR.add(OR61);
@@ -2973,7 +2973,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 274:3: -> ^( DISJUNCTION ( searchAndCondition )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:274:6: ^( DISJUNCTION ( searchAndCondition )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:274:6: ^( DISJUNCTION ( searchAndCondition )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DISJUNCTION, "DISJUNCTION"), root_1);
@@ -3020,7 +3020,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start searchAndCondition
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:278:1: searchAndCondition : searchNotCondition ( AND searchNotCondition )* -> ^( CONJUNCTION ( searchNotCondition )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:278:1: searchAndCondition : searchNotCondition ( AND searchNotCondition )* -> ^( CONJUNCTION ( searchNotCondition )+ ) ;
public final CMISParser.searchAndCondition_return searchAndCondition() throws RecognitionException {
CMISParser.searchAndCondition_return retval = new CMISParser.searchAndCondition_return();
retval.start = input.LT(1);
@@ -3037,8 +3037,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND");
RewriteRuleSubtreeStream stream_searchNotCondition=new RewriteRuleSubtreeStream(adaptor,"rule searchNotCondition");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:282:2: ( searchNotCondition ( AND searchNotCondition )* -> ^( CONJUNCTION ( searchNotCondition )+ ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:282:4: searchNotCondition ( AND searchNotCondition )*
+ // 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);
searchNotCondition63=searchNotCondition();
@@ -3046,7 +3046,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_searchNotCondition.add(searchNotCondition63.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:282:23: ( AND searchNotCondition )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:282:23: ( AND searchNotCondition )*
loop24:
do {
int alt24=2;
@@ -3059,7 +3059,7 @@ public class CMISParser extends Parser {
switch (alt24) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:282:24: AND searchNotCondition
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:282:24: AND searchNotCondition
{
AND64=(Token)match(input,AND,FOLLOW_AND_in_searchAndCondition958); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_AND.add(AND64);
@@ -3094,7 +3094,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 283:3: -> ^( CONJUNCTION ( searchNotCondition )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:283:6: ^( CONJUNCTION ( searchNotCondition )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:283:6: ^( CONJUNCTION ( searchNotCondition )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONJUNCTION, "CONJUNCTION"), root_1);
@@ -3141,7 +3141,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start searchNotCondition
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:286:1: searchNotCondition : ( NOT searchTest -> ^( NEGATION searchTest ) | searchTest -> searchTest );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:286:1: searchNotCondition : ( NOT searchTest -> ^( NEGATION searchTest ) | searchTest -> searchTest );
public final CMISParser.searchNotCondition_return searchNotCondition() throws RecognitionException {
CMISParser.searchNotCondition_return retval = new CMISParser.searchNotCondition_return();
retval.start = input.LT(1);
@@ -3158,12 +3158,12 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
RewriteRuleSubtreeStream stream_searchTest=new RewriteRuleSubtreeStream(adaptor,"rule searchTest");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:287:2: ( NOT searchTest -> ^( NEGATION searchTest ) | searchTest -> searchTest )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:287:2: ( NOT searchTest -> ^( NEGATION searchTest ) | searchTest -> searchTest )
int alt25=2;
alt25 = dfa25.predict(input);
switch (alt25) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:287:4: NOT searchTest
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:287:4: NOT searchTest
{
NOT66=(Token)match(input,NOT,FOLLOW_NOT_in_searchNotCondition987); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT66);
@@ -3189,7 +3189,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 288:3: -> ^( NEGATION searchTest )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:288:6: ^( NEGATION searchTest )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:288:6: ^( NEGATION searchTest )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATION, "NEGATION"), root_1);
@@ -3205,7 +3205,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:289:4: searchTest
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:289:4: searchTest
{
pushFollow(FOLLOW_searchTest_in_searchNotCondition1004);
searchTest68=searchTest();
@@ -3262,7 +3262,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start searchTest
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:293:1: searchTest : ( predicate -> predicate | LPAREN searchOrCondition RPAREN -> searchOrCondition );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:293:1: searchTest : ( predicate -> predicate | LPAREN searchOrCondition RPAREN -> searchOrCondition );
public final CMISParser.searchTest_return searchTest() throws RecognitionException {
CMISParser.searchTest_return retval = new CMISParser.searchTest_return();
retval.start = input.LT(1);
@@ -3283,7 +3283,7 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_predicate=new RewriteRuleSubtreeStream(adaptor,"rule predicate");
RewriteRuleSubtreeStream stream_searchOrCondition=new RewriteRuleSubtreeStream(adaptor,"rule searchOrCondition");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:294:2: ( predicate -> predicate | LPAREN searchOrCondition RPAREN -> searchOrCondition )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:294:2: ( predicate -> predicate | LPAREN searchOrCondition RPAREN -> searchOrCondition )
int alt26=2;
int LA26_0 = input.LA(1);
@@ -3302,7 +3302,7 @@ public class CMISParser extends Parser {
}
switch (alt26) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:294:4: predicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:294:4: predicate
{
pushFollow(FOLLOW_predicate_in_searchTest1022);
predicate69=predicate();
@@ -3333,7 +3333,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:296:4: LPAREN searchOrCondition RPAREN
+ // 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;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN70);
@@ -3396,7 +3396,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start predicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:300:1: predicate : ( comparisonPredicate | inPredicate | likePredicate | nullPredicate | quantifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:300:1: predicate : ( comparisonPredicate | inPredicate | likePredicate | nullPredicate | quantifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate );
public final CMISParser.predicate_return predicate() throws RecognitionException {
CMISParser.predicate_return retval = new CMISParser.predicate_return();
retval.start = input.LT(1);
@@ -3422,12 +3422,12 @@ public class CMISParser extends Parser {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:301:2: ( comparisonPredicate | inPredicate | likePredicate | nullPredicate | quantifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:301:2: ( comparisonPredicate | inPredicate | likePredicate | nullPredicate | quantifiedComparisonPredicate | quantifiedInPredicate | textSearchPredicate | folderPredicate )
int alt27=8;
alt27 = dfa27.predict(input);
switch (alt27) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:301:4: comparisonPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:301:4: comparisonPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3441,7 +3441,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:302:4: inPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:302:4: inPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3455,7 +3455,7 @@ public class CMISParser extends Parser {
}
break;
case 3 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:303:4: likePredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:303:4: likePredicate
{
root_0 = (Object)adaptor.nil();
@@ -3469,7 +3469,7 @@ public class CMISParser extends Parser {
}
break;
case 4 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:304:4: nullPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:304:4: nullPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3483,7 +3483,7 @@ public class CMISParser extends Parser {
}
break;
case 5 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:305:5: quantifiedComparisonPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:305:5: quantifiedComparisonPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3497,7 +3497,7 @@ public class CMISParser extends Parser {
}
break;
case 6 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:306:4: quantifiedInPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:306:4: quantifiedInPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3511,7 +3511,7 @@ public class CMISParser extends Parser {
}
break;
case 7 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:307:4: textSearchPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:307:4: textSearchPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3525,7 +3525,7 @@ public class CMISParser extends Parser {
}
break;
case 8 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:308:4: folderPredicate
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:308:4: folderPredicate
{
root_0 = (Object)adaptor.nil();
@@ -3565,7 +3565,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start comparisonPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:311:1: comparisonPredicate : valueExpression compOp literalOrParameterName -> ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:311:1: comparisonPredicate : valueExpression compOp literalOrParameterName -> ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName ) ;
public final CMISParser.comparisonPredicate_return comparisonPredicate() throws RecognitionException {
CMISParser.comparisonPredicate_return retval = new CMISParser.comparisonPredicate_return();
retval.start = input.LT(1);
@@ -3583,8 +3583,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_compOp=new RewriteRuleSubtreeStream(adaptor,"rule compOp");
RewriteRuleSubtreeStream stream_literalOrParameterName=new RewriteRuleSubtreeStream(adaptor,"rule literalOrParameterName");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:312:2: ( valueExpression compOp literalOrParameterName -> ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:312:4: valueExpression compOp literalOrParameterName
+ // 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);
valueExpression81=valueExpression();
@@ -3607,7 +3607,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: valueExpression, literalOrParameterName, compOp
+ // elements: compOp, literalOrParameterName, valueExpression
// token labels:
// rule labels: retval
// token list labels:
@@ -3619,7 +3619,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 313:3: -> ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:313:6: ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:313:6: ^( PRED_COMPARISON ANY valueExpression compOp literalOrParameterName )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_COMPARISON, "PRED_COMPARISON"), root_1);
@@ -3662,7 +3662,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start compOp
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:316:1: compOp : ( EQUALS | NOTEQUALS | LESSTHAN | GREATERTHAN | LESSTHANOREQUALS | GREATERTHANOREQUALS );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:316:1: compOp : ( EQUALS | NOTEQUALS | LESSTHAN | GREATERTHAN | LESSTHANOREQUALS | GREATERTHANOREQUALS );
public final CMISParser.compOp_return compOp() throws RecognitionException {
CMISParser.compOp_return retval = new CMISParser.compOp_return();
retval.start = input.LT(1);
@@ -3674,8 +3674,8 @@ public class CMISParser extends Parser {
Object set84_tree=null;
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:317:2: ( EQUALS | NOTEQUALS | LESSTHAN | GREATERTHAN | LESSTHANOREQUALS | GREATERTHANOREQUALS )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:317:2: ( EQUALS | NOTEQUALS | LESSTHAN | GREATERTHAN | LESSTHANOREQUALS | GREATERTHANOREQUALS )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:
{
root_0 = (Object)adaptor.nil();
@@ -3719,7 +3719,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start literalOrParameterName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:325:1: literalOrParameterName : ( literal | parameterName );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:325:1: literalOrParameterName : ( literal | parameterName );
public final CMISParser.literalOrParameterName_return literalOrParameterName() throws RecognitionException {
CMISParser.literalOrParameterName_return retval = new CMISParser.literalOrParameterName_return();
retval.start = input.LT(1);
@@ -3733,7 +3733,7 @@ public class CMISParser extends Parser {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:326:2: ( literal | parameterName )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:326:2: ( literal | parameterName )
int alt28=2;
int LA28_0 = input.LA(1);
@@ -3752,7 +3752,7 @@ public class CMISParser extends Parser {
}
switch (alt28) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:326:4: literal
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:326:4: literal
{
root_0 = (Object)adaptor.nil();
@@ -3766,7 +3766,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:327:4: parameterName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:327:4: parameterName
{
root_0 = (Object)adaptor.nil();
@@ -3806,7 +3806,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start literal
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:330:1: literal : ( signedNumericLiteral | characterStringLiteral );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:330:1: literal : ( signedNumericLiteral | characterStringLiteral );
public final CMISParser.literal_return literal() throws RecognitionException {
CMISParser.literal_return retval = new CMISParser.literal_return();
retval.start = input.LT(1);
@@ -3820,7 +3820,7 @@ public class CMISParser extends Parser {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:331:2: ( signedNumericLiteral | characterStringLiteral )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:331:2: ( signedNumericLiteral | characterStringLiteral )
int alt29=2;
int LA29_0 = input.LA(1);
@@ -3839,7 +3839,7 @@ public class CMISParser extends Parser {
}
switch (alt29) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:331:4: signedNumericLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:331:4: signedNumericLiteral
{
root_0 = (Object)adaptor.nil();
@@ -3853,7 +3853,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:332:4: characterStringLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:332:4: characterStringLiteral
{
root_0 = (Object)adaptor.nil();
@@ -3893,7 +3893,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start inPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:335:1: inPredicate : columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:335:1: inPredicate : columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) ;
public final CMISParser.inPredicate_return inPredicate() throws RecognitionException {
CMISParser.inPredicate_return retval = new CMISParser.inPredicate_return();
retval.start = input.LT(1);
@@ -3920,8 +3920,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_inValueList=new RewriteRuleSubtreeStream(adaptor,"rule inValueList");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:2: ( columnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY columnReference inValueList ( NOT )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:4: columnReference ( NOT )? IN LPAREN inValueList RPAREN
+ // 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);
columnReference89=columnReference();
@@ -3929,7 +3929,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_columnReference.add(columnReference89.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:20: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:336:20: ( NOT )?
int alt30=2;
int LA30_0 = input.LA(1);
@@ -3938,7 +3938,7 @@ public class CMISParser extends Parser {
}
switch (alt30) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:336:20: NOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:336:20: NOT
{
NOT90=(Token)match(input,NOT,FOLLOW_NOT_in_inPredicate1209); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT90);
@@ -3967,7 +3967,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: inValueList, NOT, columnReference
+ // elements: columnReference, inValueList, NOT
// token labels:
// rule labels: retval
// token list labels:
@@ -3979,7 +3979,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 337:3: -> ^( PRED_IN ANY columnReference inValueList ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:6: ^( PRED_IN ANY columnReference inValueList ( NOT )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:337:6: ^( PRED_IN ANY columnReference inValueList ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_IN, "PRED_IN"), root_1);
@@ -3987,7 +3987,7 @@ public class CMISParser extends Parser {
adaptor.addChild(root_1, (Object)adaptor.create(ANY, "ANY"));
adaptor.addChild(root_1, stream_columnReference.nextTree());
adaptor.addChild(root_1, stream_inValueList.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:337:48: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:337:48: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
@@ -4027,7 +4027,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start inValueList
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:340:1: inValueList : literalOrParameterName ( COMMA literalOrParameterName )* -> ^( LIST ( literalOrParameterName )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:340:1: inValueList : literalOrParameterName ( COMMA literalOrParameterName )* -> ^( LIST ( literalOrParameterName )+ ) ;
public final CMISParser.inValueList_return inValueList() throws RecognitionException {
CMISParser.inValueList_return retval = new CMISParser.inValueList_return();
retval.start = input.LT(1);
@@ -4044,8 +4044,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_literalOrParameterName=new RewriteRuleSubtreeStream(adaptor,"rule literalOrParameterName");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:341:2: ( literalOrParameterName ( COMMA literalOrParameterName )* -> ^( LIST ( literalOrParameterName )+ ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:341:4: literalOrParameterName ( COMMA literalOrParameterName )*
+ // 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);
literalOrParameterName95=literalOrParameterName();
@@ -4053,7 +4053,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_literalOrParameterName.add(literalOrParameterName95.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:341:27: ( COMMA literalOrParameterName )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:341:27: ( COMMA literalOrParameterName )*
loop31:
do {
int alt31=2;
@@ -4066,7 +4066,7 @@ public class CMISParser extends Parser {
switch (alt31) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:341:28: COMMA literalOrParameterName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:341:28: COMMA literalOrParameterName
{
COMMA96=(Token)match(input,COMMA,FOLLOW_COMMA_in_inValueList1250); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA96);
@@ -4101,7 +4101,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 342:3: -> ^( LIST ( literalOrParameterName )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:342:6: ^( LIST ( literalOrParameterName )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:342:6: ^( LIST ( literalOrParameterName )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LIST, "LIST"), root_1);
@@ -4148,7 +4148,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start likePredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:345:1: likePredicate : columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:345:1: likePredicate : columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) ;
public final CMISParser.likePredicate_return likePredicate() throws RecognitionException {
CMISParser.likePredicate_return retval = new CMISParser.likePredicate_return();
retval.start = input.LT(1);
@@ -4169,8 +4169,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_characterStringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule characterStringLiteral");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:2: ( columnReference ( NOT )? LIKE characterStringLiteral -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:4: columnReference ( NOT )? LIKE characterStringLiteral
+ // 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);
columnReference98=columnReference();
@@ -4178,7 +4178,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_columnReference.add(columnReference98.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:20: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:346:20: ( NOT )?
int alt32=2;
int LA32_0 = input.LA(1);
@@ -4187,7 +4187,7 @@ public class CMISParser extends Parser {
}
switch (alt32) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:346:20: NOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:346:20: NOT
{
NOT99=(Token)match(input,NOT,FOLLOW_NOT_in_likePredicate1280); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT99);
@@ -4222,14 +4222,14 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 347:3: -> ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:6: ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:347:6: ^( PRED_LIKE columnReference characterStringLiteral ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_LIKE, "PRED_LIKE"), root_1);
adaptor.addChild(root_1, stream_columnReference.nextTree());
adaptor.addChild(root_1, stream_characterStringLiteral.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:347:57: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:347:57: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
@@ -4269,7 +4269,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start nullPredicate
- // W:\\workspace-cmis\\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 ( NOT )? NULL -> ^( PRED_EXISTS columnReference ( NOT )? ) ;
public final CMISParser.nullPredicate_return nullPredicate() throws RecognitionException {
CMISParser.nullPredicate_return retval = new CMISParser.nullPredicate_return();
retval.start = input.LT(1);
@@ -4293,10 +4293,10 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:2: ( ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS ( NOT )? NULL -> ^( PRED_EXISTS columnReference ( NOT )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference ) IS ( NOT )? NULL
+ // 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-cmis\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:4: ( ( columnReference )=> columnReference | multiValuedColumnReference )
int alt33=2;
int LA33_0 = input.LA(1);
@@ -4393,7 +4393,7 @@ public class CMISParser extends Parser {
}
switch (alt33) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:6: ( columnReference )=> columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:6: ( columnReference )=> columnReference
{
pushFollow(FOLLOW_columnReference_in_nullPredicate1319);
columnReference102=columnReference();
@@ -4405,7 +4405,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:44: multiValuedColumnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:44: multiValuedColumnReference
{
pushFollow(FOLLOW_multiValuedColumnReference_in_nullPredicate1323);
multiValuedColumnReference103=multiValuedColumnReference();
@@ -4422,7 +4422,7 @@ public class CMISParser extends Parser {
IS104=(Token)match(input,IS,FOLLOW_IS_in_nullPredicate1326); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IS.add(IS104);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:75: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:75: ( NOT )?
int alt34=2;
int LA34_0 = input.LA(1);
@@ -4431,7 +4431,7 @@ public class CMISParser extends Parser {
}
switch (alt34) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:75: NOT
+ // 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);
@@ -4460,13 +4460,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 352:3: -> ^( PRED_EXISTS columnReference ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:352:6: ^( 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-cmis\\ANTLR\\CMIS.g:352:36: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:352:36: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
@@ -4506,7 +4506,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start quantifiedComparisonPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:355:1: quantifiedComparisonPredicate : literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:355: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);
@@ -4527,8 +4527,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_literalOrParameterName=new RewriteRuleSubtreeStream(adaptor,"rule literalOrParameterName");
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:356:2: ( literalOrParameterName compOp ANY multiValuedColumnReference -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:356:4: literalOrParameterName compOp ANY multiValuedColumnReference
+ // 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
{
pushFollow(FOLLOW_literalOrParameterName_in_quantifiedComparisonPredicate1356);
literalOrParameterName107=literalOrParameterName();
@@ -4554,7 +4554,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: ANY, literalOrParameterName, multiValuedColumnReference, compOp
+ // elements: compOp, multiValuedColumnReference, literalOrParameterName, ANY
// token labels:
// rule labels: retval
// token list labels:
@@ -4566,7 +4566,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 357:2: -> ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:357:5: ^( PRED_COMPARISON ANY literalOrParameterName compOp multiValuedColumnReference )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:357: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,7 +4609,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start quantifiedInPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:361:1: quantifiedInPredicate : ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:361:1: quantifiedInPredicate : ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) ;
public final CMISParser.quantifiedInPredicate_return quantifiedInPredicate() throws RecognitionException {
CMISParser.quantifiedInPredicate_return retval = new CMISParser.quantifiedInPredicate_return();
retval.start = input.LT(1);
@@ -4639,8 +4639,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_multiValuedColumnReference=new RewriteRuleSubtreeStream(adaptor,"rule multiValuedColumnReference");
RewriteRuleSubtreeStream stream_inValueList=new RewriteRuleSubtreeStream(adaptor,"rule inValueList");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:2: ( ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:4: ANY multiValuedColumnReference ( NOT )? IN LPAREN inValueList RPAREN
+ // 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
{
ANY111=(Token)match(input,ANY,FOLLOW_ANY_in_quantifiedInPredicate1391); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ANY.add(ANY111);
@@ -4651,7 +4651,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_multiValuedColumnReference.add(multiValuedColumnReference112.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:35: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:35: ( NOT )?
int alt35=2;
int LA35_0 = input.LA(1);
@@ -4660,7 +4660,7 @@ public class CMISParser extends Parser {
}
switch (alt35) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:362:35: NOT
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:362:35: NOT
{
NOT113=(Token)match(input,NOT,FOLLOW_NOT_in_quantifiedInPredicate1395); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NOT.add(NOT113);
@@ -4689,7 +4689,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: inValueList, ANY, multiValuedColumnReference, NOT
+ // elements: ANY, multiValuedColumnReference, inValueList, NOT
// token labels:
// rule labels: retval
// token list labels:
@@ -4701,7 +4701,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 363:3: -> ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:363:6: ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:363:6: ^( PRED_IN ANY multiValuedColumnReference inValueList ( NOT )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_IN, "PRED_IN"), root_1);
@@ -4709,7 +4709,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-cmis\\ANTLR\\CMIS.g:363:59: ( NOT )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:363:59: ( NOT )?
if ( stream_NOT.hasNext() ) {
adaptor.addChild(root_1, stream_NOT.nextNode());
@@ -4749,7 +4749,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start textSearchPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:366:1: textSearchPredicate : CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:366:1: textSearchPredicate : CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) ;
public final CMISParser.textSearchPredicate_return textSearchPredicate() throws RecognitionException {
CMISParser.textSearchPredicate_return retval = new CMISParser.textSearchPredicate_return();
retval.start = input.LT(1);
@@ -4778,8 +4778,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_textSearchExpression=new RewriteRuleSubtreeStream(adaptor,"rule textSearchExpression");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:2: ( CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN -> ^( PRED_FTS textSearchExpression ( qualifier )? ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:4: CONTAINS LPAREN ( qualifier COMMA | COMMA )? textSearchExpression RPAREN
+ // 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
{
CONTAINS118=(Token)match(input,CONTAINS,FOLLOW_CONTAINS_in_textSearchPredicate1434); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CONTAINS.add(CONTAINS118);
@@ -4787,7 +4787,7 @@ public class CMISParser extends Parser {
LPAREN119=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_textSearchPredicate1436); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN119);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:20: ( qualifier COMMA | COMMA )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:20: ( qualifier COMMA | COMMA )?
int alt36=3;
int LA36_0 = input.LA(1);
@@ -4799,7 +4799,7 @@ public class CMISParser extends Parser {
}
switch (alt36) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:21: qualifier COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:21: qualifier COMMA
{
pushFollow(FOLLOW_qualifier_in_textSearchPredicate1439);
qualifier120=qualifier();
@@ -4814,7 +4814,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:367:39: COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:367:39: COMMA
{
COMMA122=(Token)match(input,COMMA,FOLLOW_COMMA_in_textSearchPredicate1445); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA122);
@@ -4849,13 +4849,13 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 368:3: -> ^( PRED_FTS textSearchExpression ( qualifier )? )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:368:6: ^( PRED_FTS textSearchExpression ( qualifier )? )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:368:6: ^( PRED_FTS textSearchExpression ( qualifier )? )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRED_FTS, "PRED_FTS"), root_1);
adaptor.addChild(root_1, stream_textSearchExpression.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:368:38: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:368:38: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_1, stream_qualifier.nextTree());
@@ -4895,7 +4895,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderPredicate
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:371:1: folderPredicate : ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:371: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);
@@ -4915,7 +4915,7 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_IN_FOLDER=new RewriteRuleTokenStream(adaptor,"token IN_FOLDER");
RewriteRuleSubtreeStream stream_folderPredicateArgs=new RewriteRuleSubtreeStream(adaptor,"rule folderPredicateArgs");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:372:2: ( IN_FOLDER folderPredicateArgs -> ^( PRED_CHILD folderPredicateArgs ) | IN_TREE folderPredicateArgs -> ^( PRED_DESCENDANT folderPredicateArgs ) )
+ // 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);
@@ -4934,7 +4934,7 @@ public class CMISParser extends Parser {
}
switch (alt37) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:372:4: IN_FOLDER folderPredicateArgs
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:372: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);
@@ -4960,7 +4960,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 373:3: -> ^( PRED_CHILD folderPredicateArgs )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:373:6: ^( PRED_CHILD folderPredicateArgs )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:373: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,7 +4976,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:374:10: IN_TREE folderPredicateArgs
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:374: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);
@@ -5002,7 +5002,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 375:3: -> ^( PRED_DESCENDANT folderPredicateArgs )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:375:6: ^( PRED_DESCENDANT folderPredicateArgs )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:375: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,7 +5044,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderPredicateArgs
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:378:1: folderPredicateArgs : LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:378: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);
@@ -5070,13 +5070,13 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
RewriteRuleSubtreeStream stream_folderId=new RewriteRuleSubtreeStream(adaptor,"rule folderId");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:379:2: ( LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN -> folderId ( qualifier )? )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:379:4: LPAREN ( qualifier COMMA | COMMA )? folderId RPAREN
+ // 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
{
LPAREN129=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_folderPredicateArgs1524); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN129);
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:379:11: ( qualifier COMMA | COMMA )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:11: ( qualifier COMMA | COMMA )?
int alt38=3;
int LA38_0 = input.LA(1);
@@ -5088,7 +5088,7 @@ public class CMISParser extends Parser {
}
switch (alt38) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:379:12: qualifier COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:12: qualifier COMMA
{
pushFollow(FOLLOW_qualifier_in_folderPredicateArgs1527);
qualifier130=qualifier();
@@ -5103,7 +5103,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:379:30: COMMA
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:379:30: COMMA
{
COMMA132=(Token)match(input,COMMA,FOLLOW_COMMA_in_folderPredicateArgs1533); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA132);
@@ -5139,7 +5139,7 @@ public class CMISParser extends Parser {
// 380:3: -> folderId ( qualifier )?
{
adaptor.addChild(root_0, stream_folderId.nextTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:380:15: ( qualifier )?
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:380:15: ( qualifier )?
if ( stream_qualifier.hasNext() ) {
adaptor.addChild(root_0, stream_qualifier.nextTree());
@@ -5176,7 +5176,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start orderByClause
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:383:1: orderByClause : ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:383: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);
@@ -5200,8 +5200,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_sortSpecification=new RewriteRuleSubtreeStream(adaptor,"rule sortSpecification");
paraphrases.push("in order by");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:386:2: ( ORDER BY sortSpecification ( COMMA sortSpecification )* -> ^( ORDER ( sortSpecification )+ ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:386:4: ORDER BY sortSpecification ( COMMA sortSpecification )*
+ // 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 )*
{
ORDER135=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1578); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ORDER.add(ORDER135);
@@ -5215,7 +5215,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_sortSpecification.add(sortSpecification137.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:386:31: ( COMMA sortSpecification )*
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386:31: ( COMMA sortSpecification )*
loop39:
do {
int alt39=2;
@@ -5228,7 +5228,7 @@ public class CMISParser extends Parser {
switch (alt39) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:386:33: COMMA sortSpecification
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:386: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);
@@ -5263,7 +5263,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 387:3: -> ^( ORDER ( sortSpecification )+ )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:387:6: ^( ORDER ( sortSpecification )+ )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:387:6: ^( ORDER ( sortSpecification )+ )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_ORDER.nextNode(), root_1);
@@ -5313,7 +5313,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start sortSpecification
- // W:\\workspace-cmis\\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:390:1: sortSpecification : ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) );
public final CMISParser.sortSpecification_return sortSpecification() throws RecognitionException {
CMISParser.sortSpecification_return retval = new CMISParser.sortSpecification_return();
retval.start = input.LT(1);
@@ -5331,12 +5331,12 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_DESC=new RewriteRuleTokenStream(adaptor,"token DESC");
RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:2: ( columnReference -> ^( SORT_SPECIFICATION columnReference ASC ) | columnReference (by= ASC | by= DESC ) -> ^( SORT_SPECIFICATION columnReference $by) )
+ // 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) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:391:4: columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:391:4: columnReference
{
pushFollow(FOLLOW_columnReference_in_sortSpecification1614);
columnReference140=columnReference();
@@ -5359,7 +5359,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 392:3: -> ^( SORT_SPECIFICATION columnReference ASC )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:392:6: ^( SORT_SPECIFICATION columnReference ASC )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:392:6: ^( SORT_SPECIFICATION columnReference ASC )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SORT_SPECIFICATION, "SORT_SPECIFICATION"), root_1);
@@ -5376,7 +5376,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:4: columnReference (by= ASC | by= DESC )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:4: columnReference (by= ASC | by= DESC )
{
pushFollow(FOLLOW_columnReference_in_sortSpecification1632);
columnReference141=columnReference();
@@ -5384,7 +5384,7 @@ public class CMISParser extends Parser {
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_columnReference.add(columnReference141.getTree());
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:20: (by= ASC | by= DESC )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:20: (by= ASC | by= DESC )
int alt40=2;
int LA40_0 = input.LA(1);
@@ -5403,7 +5403,7 @@ public class CMISParser extends Parser {
}
switch (alt40) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:22: by= ASC
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:22: by= ASC
{
by=(Token)match(input,ASC,FOLLOW_ASC_in_sortSpecification1638); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ASC.add(by);
@@ -5412,7 +5412,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:393:31: by= DESC
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:393:31: by= DESC
{
by=(Token)match(input,DESC,FOLLOW_DESC_in_sortSpecification1644); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DESC.add(by);
@@ -5426,7 +5426,7 @@ public class CMISParser extends Parser {
// AST REWRITE
- // elements: by, columnReference
+ // elements: columnReference, by
// token labels: by
// rule labels: retval
// token list labels:
@@ -5439,7 +5439,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 394:3: -> ^( SORT_SPECIFICATION columnReference $by)
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:394:6: ^( SORT_SPECIFICATION columnReference $by)
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:394:6: ^( SORT_SPECIFICATION columnReference $by)
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SORT_SPECIFICATION, "SORT_SPECIFICATION"), root_1);
@@ -5482,7 +5482,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start correlationName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:397:1: correlationName : identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:397:1: correlationName : identifier ;
public final CMISParser.correlationName_return correlationName() throws RecognitionException {
CMISParser.correlationName_return retval = new CMISParser.correlationName_return();
retval.start = input.LT(1);
@@ -5494,8 +5494,8 @@ public class CMISParser extends Parser {
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:398:2: ( identifier )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:398:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:398:2: ( identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:398:4: identifier
{
root_0 = (Object)adaptor.nil();
@@ -5533,7 +5533,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start tableName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:405:1: tableName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:405: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);
@@ -5545,8 +5545,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:406:2: ( identifier -> identifier )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:406:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:406:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:406:4: identifier
{
pushFollow(FOLLOW_identifier_in_tableName1685);
identifier143=identifier();
@@ -5601,7 +5601,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start columnName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:410:1: columnName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:410: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);
@@ -5613,8 +5613,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:411:2: ( identifier -> identifier )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:411:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:411:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:411:4: identifier
{
pushFollow(FOLLOW_identifier_in_columnName1703);
identifier144=identifier();
@@ -5669,7 +5669,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start multiValuedColumnName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:415:1: multiValuedColumnName : identifier -> identifier ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:415: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);
@@ -5681,8 +5681,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:416:2: ( identifier -> identifier )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:416:4: identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:416:2: ( identifier -> identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:416:4: identifier
{
pushFollow(FOLLOW_identifier_in_multiValuedColumnName1722);
identifier145=identifier();
@@ -5737,7 +5737,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start parameterName
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:420:1: parameterName : COLON identifier -> ^( PARAMETER identifier ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:420: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);
@@ -5752,8 +5752,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:421:2: ( COLON identifier -> ^( PARAMETER identifier ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:421:4: COLON identifier
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:421:2: ( COLON identifier -> ^( PARAMETER identifier ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:421: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);
@@ -5779,7 +5779,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 422:3: -> ^( PARAMETER identifier )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:422:6: ^( PARAMETER identifier )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:422:6: ^( PARAMETER identifier )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER, "PARAMETER"), root_1);
@@ -5819,7 +5819,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start folderId
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:425:1: folderId : characterStringLiteral -> characterStringLiteral ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:425: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);
@@ -5831,8 +5831,8 @@ public class CMISParser extends Parser {
RewriteRuleSubtreeStream stream_characterStringLiteral=new RewriteRuleSubtreeStream(adaptor,"rule characterStringLiteral");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:426:3: ( characterStringLiteral -> characterStringLiteral )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:426:5: characterStringLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:426:3: ( characterStringLiteral -> characterStringLiteral )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:426:5: characterStringLiteral
{
pushFollow(FOLLOW_characterStringLiteral_in_folderId1765);
characterStringLiteral148=characterStringLiteral();
@@ -5887,7 +5887,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start textSearchExpression
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:430:1: textSearchExpression : QUOTED_STRING ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:430: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);
@@ -5899,8 +5899,8 @@ public class CMISParser extends Parser {
Object QUOTED_STRING149_tree=null;
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:431:2: ( QUOTED_STRING )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:431:4: QUOTED_STRING
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:431:2: ( QUOTED_STRING )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:431:4: QUOTED_STRING
{
root_0 = (Object)adaptor.nil();
@@ -5937,7 +5937,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start identifier
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:434:1: identifier : ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:434: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);
@@ -5957,7 +5957,7 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_DOUBLE_QUOTE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_QUOTE");
RewriteRuleSubtreeStream stream_keyWordOrId=new RewriteRuleSubtreeStream(adaptor,"rule keyWordOrId");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:435:2: ( ID -> ID | DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE -> ^( keyWordOrId ) )
+ // 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);
@@ -5976,7 +5976,7 @@ public class CMISParser extends Parser {
}
switch (alt42) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:435:4: ID
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:435:4: ID
{
ID150=(Token)match(input,ID,FOLLOW_ID_in_identifier1798); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID150);
@@ -6004,7 +6004,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:437:4: DOUBLE_QUOTE keyWordOrId DOUBLE_QUOTE
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:437: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);
@@ -6033,7 +6033,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 438:3: -> ^( keyWordOrId )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:438:6: ^( keyWordOrId )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:438:6: ^( keyWordOrId )
{
Object root_1 = (Object)adaptor.nil();
root_1 = (Object)adaptor.becomeRoot(stream_keyWordOrId.nextNode(), root_1);
@@ -6073,7 +6073,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start signedNumericLiteral
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:441:1: signedNumericLiteral : ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:441: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);
@@ -6088,7 +6088,7 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_FLOATING_POINT_LITERAL=new RewriteRuleTokenStream(adaptor,"token FLOATING_POINT_LITERAL");
RewriteRuleSubtreeStream stream_integerLiteral=new RewriteRuleSubtreeStream(adaptor,"rule integerLiteral");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:442:2: ( FLOATING_POINT_LITERAL -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL ) | integerLiteral -> integerLiteral )
+ // 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);
@@ -6107,7 +6107,7 @@ public class CMISParser extends Parser {
}
switch (alt43) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:442:4: FLOATING_POINT_LITERAL
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:442: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);
@@ -6127,7 +6127,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 443:3: -> ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:443:6: ^( NUMERIC_LITERAL FLOATING_POINT_LITERAL )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:443: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,7 +6143,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:444:4: integerLiteral
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:444:4: integerLiteral
{
pushFollow(FOLLOW_integerLiteral_in_signedNumericLiteral1848);
integerLiteral155=integerLiteral();
@@ -6200,7 +6200,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start integerLiteral
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:448:1: integerLiteral : DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:448: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);
@@ -6213,8 +6213,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_DECIMAL_INTEGER_LITERAL=new RewriteRuleTokenStream(adaptor,"token DECIMAL_INTEGER_LITERAL");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:449:2: ( DECIMAL_INTEGER_LITERAL -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:449:4: DECIMAL_INTEGER_LITERAL
+ // 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
{
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);
@@ -6234,7 +6234,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 450:3: -> ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:450:6: ^( NUMERIC_LITERAL DECIMAL_INTEGER_LITERAL )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:450: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,7 +6274,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start characterStringLiteral
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:453:1: characterStringLiteral : QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) ;
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:453: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);
@@ -6287,8 +6287,8 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_QUOTED_STRING=new RewriteRuleTokenStream(adaptor,"token QUOTED_STRING");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:454:2: ( QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:454:4: QUOTED_STRING
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:454:2: ( QUOTED_STRING -> ^( STRING_LITERAL QUOTED_STRING ) )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:454: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);
@@ -6308,7 +6308,7 @@ public class CMISParser extends Parser {
root_0 = (Object)adaptor.nil();
// 455:3: -> ^( STRING_LITERAL QUOTED_STRING )
{
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:455:6: ^( STRING_LITERAL QUOTED_STRING )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:455: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,7 +6348,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start keyWord
- // W:\\workspace-cmis\\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: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 );
public final CMISParser.keyWord_return keyWord() throws RecognitionException {
CMISParser.keyWord_return retval = new CMISParser.keyWord_return();
retval.start = input.LT(1);
@@ -6360,8 +6360,8 @@ public class CMISParser extends Parser {
Object set158_tree=null;
try {
- // W:\\workspace-cmis\\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-cmis\\ANTLR\\CMIS.g:
+ // 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:
{
root_0 = (Object)adaptor.nil();
@@ -6405,7 +6405,7 @@ public class CMISParser extends Parser {
};
// $ANTLR start keyWordOrId
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:488:1: keyWordOrId : ( keyWord -> keyWord | ID -> ID );
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:488: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);
@@ -6420,7 +6420,7 @@ public class CMISParser extends Parser {
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleSubtreeStream stream_keyWord=new RewriteRuleSubtreeStream(adaptor,"rule keyWord");
try {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:489:2: ( keyWord -> keyWord | ID -> ID )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:489:2: ( keyWord -> keyWord | ID -> ID )
int alt44=2;
int LA44_0 = input.LA(1);
@@ -6439,7 +6439,7 @@ public class CMISParser extends Parser {
}
switch (alt44) {
case 1 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:489:4: keyWord
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:489:4: keyWord
{
pushFollow(FOLLOW_keyWord_in_keyWordOrId2099);
keyWord159=keyWord();
@@ -6470,7 +6470,7 @@ public class CMISParser extends Parser {
}
break;
case 2 :
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:491:4: ID
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:491:4: ID
{
ID160=(Token)match(input,ID,FOLLOW_ID_in_keyWordOrId2111); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID160);
@@ -6520,8 +6520,8 @@ public class CMISParser extends Parser {
// $ANTLR start synpred1_CMIS
public final void synpred1_CMIS_fragment() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:4: ( valueExpression )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:165:5: valueExpression
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:4: ( valueExpression )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:165:5: valueExpression
{
pushFollow(FOLLOW_valueExpression_in_synpred1_CMIS287);
valueExpression();
@@ -6535,8 +6535,8 @@ public class CMISParser extends Parser {
// $ANTLR start synpred2_CMIS
public final void synpred2_CMIS_fragment() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:207:4: ( tableName )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:207:5: tableName
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:4: ( tableName )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:207:5: tableName
{
pushFollow(FOLLOW_tableName_in_synpred2_CMIS562);
tableName();
@@ -6550,8 +6550,8 @@ public class CMISParser extends Parser {
// $ANTLR start synpred3_CMIS
public final void synpred3_CMIS_fragment() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:17: ( joinedTable )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:221:18: joinedTable
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:17: ( joinedTable )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:221:18: joinedTable
{
pushFollow(FOLLOW_joinedTable_in_synpred3_CMIS640);
joinedTable();
@@ -6565,8 +6565,8 @@ public class CMISParser extends Parser {
// $ANTLR start synpred4_CMIS
public final void synpred4_CMIS_fragment() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:35: ( joinSpecification )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:236:36: joinSpecification
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:35: ( joinSpecification )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:236:36: joinSpecification
{
pushFollow(FOLLOW_joinSpecification_in_synpred4_CMIS737);
joinSpecification();
@@ -6580,8 +6580,8 @@ public class CMISParser extends Parser {
// $ANTLR start synpred5_CMIS
public final void synpred5_CMIS_fragment() throws RecognitionException {
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:6: ( columnReference )
- // W:\\workspace-cmis\\ANTLR\\CMIS.g:351:7: columnReference
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:6: ( columnReference )
+ // W:\\workspace-cmis2\\ANTLR\\CMIS.g:351:7: columnReference
{
pushFollow(FOLLOW_columnReference_in_synpred5_CMIS1315);
columnReference();
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/FunctionArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionArgument.java
new file mode 100644
index 0000000000..5ff4ad7bb9
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionArgument.java
@@ -0,0 +1,34 @@
+/*
+ * 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;
+
+/**
+ * @author andyh
+ *
+ */
+public interface FunctionArgument extends DynamicArgument, FunctionInvokation
+{
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java b/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
index c7256f87a1..c31a0a353b 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/QueryModelFactory.java
@@ -64,4 +64,6 @@ public interface QueryModelFactory
public Function getFunction(String functionName);
public ListArgument createListArgument(String name, ArrayList arguments);
+
+ public FunctionArgument createFunctionArgument(String name, Function function, List functionArguments);
}
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
new file mode 100644
index 0000000000..61a41a415f
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/BaseFunctionArgument.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.Function;
+import org.alfresco.repo.search.impl.querymodel.FunctionArgument;
+
+/**
+ * @author andyh
+ *
+ */
+public class BaseFunctionArgument extends BaseDynamicArgument implements FunctionArgument
+{
+
+ private Function function;
+
+ private List arguments;
+
+ public BaseFunctionArgument(String name, Function function, List arguments)
+ {
+ super(name);
+ this.function = function;
+ this.arguments = arguments;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.Argument#getValue()
+ */
+ public Serializable getValue()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.FunctionInvokation#getFunction()
+ */
+ public Function getFunction()
+ {
+ return function;
+ }
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.FunctionInvokation#getFunctionArguments()
+ */
+ public List getFunctionArguments()
+ {
+ return arguments;
+ }
+
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BaseFunctionArgument[");
+ builder.append("Name=").append(getName()).append(", ");
+ builder.append("Function="+getFunction()).append(", ");
+ builder.append("Arguments="+getFunctionArguments());
+ builder.append("]");
+ return builder.toString();
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionArgument.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionArgument.java
new file mode 100644
index 0000000000..fe75c04ed1
--- /dev/null
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneFunctionArgument.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2005-2007 Alfresco Software Limited.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ * As a special exception to the terms and conditions of version 2.0 of
+ * the GPL, you may redistribute this Program in connection with Free/Libre
+ * and Open Source Software ("FLOSS") applications as described in Alfresco's
+ * FLOSS exception. You should have recieved a copy of the text describing
+ * the FLOSS exception, and it is also available here:
+ * http://www.alfresco.com/legal/licensing"
+ */
+package org.alfresco.repo.search.impl.querymodel.impl.lucene;
+
+import java.util.List;
+
+import org.alfresco.repo.search.impl.querymodel.Argument;
+import org.alfresco.repo.search.impl.querymodel.Function;
+import org.alfresco.repo.search.impl.querymodel.impl.BaseFunctionArgument;
+
+/**
+ * @author andyh
+ *
+ */
+public class LuceneFunctionArgument extends BaseFunctionArgument
+{
+
+ /**
+ * @param name
+ * @param function
+ * @param arguments
+ */
+ public LuceneFunctionArgument(String name, Function function, List arguments)
+ {
+ super(name, function, arguments);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
index b5089a2646..cd5828363c 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryModelFactory.java
@@ -33,6 +33,7 @@ import org.alfresco.repo.search.impl.querymodel.Argument;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Constraint;
import org.alfresco.repo.search.impl.querymodel.Function;
+import org.alfresco.repo.search.impl.querymodel.FunctionArgument;
import org.alfresco.repo.search.impl.querymodel.Join;
import org.alfresco.repo.search.impl.querymodel.JoinType;
import org.alfresco.repo.search.impl.querymodel.ListArgument;
@@ -287,4 +288,12 @@ public class LuceneQueryModelFactory implements QueryModelFactory
return new LuceneListArgument(name, arguments);
}
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.search.impl.querymodel.QueryModelFactory#createFunctionArgument(java.lang.String, org.alfresco.repo.search.impl.querymodel.Function, java.util.List)
+ */
+ public FunctionArgument createFunctionArgument(String name, Function function, List functionArguments)
+ {
+ return new LuceneFunctionArgument(name, function, functionArguments);
+ }
+
}
diff --git a/source/java/org/alfresco/service/cmr/search/SearchParameters.java b/source/java/org/alfresco/service/cmr/search/SearchParameters.java
index 2782830fd9..ea51033525 100644
--- a/source/java/org/alfresco/service/cmr/search/SearchParameters.java
+++ b/source/java/org/alfresco/service/cmr/search/SearchParameters.java
@@ -50,7 +50,7 @@ public class SearchParameters extends SearchStatement
*/
private static int DEFAULT_LIMIT = 500;
- private static int DEFAULT_BULK_FETCH_SIZE = 10;
+ private static int DEFAULT_BULK_FETCH_SIZE = 1000;
/*
* Standard sort definitions for sorting in document and score order.