Fix for ALF-2376: Expose cmis:baseTypeId as queryable property (or at least include it in the returned query result properties) PART 1: non-queryable properties are now selectable

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19810 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2010-04-12 11:08:38 +00:00
parent 700df2c8d4
commit 464c52891b
2 changed files with 166 additions and 157 deletions

View File

@@ -907,10 +907,7 @@ public class CMISQueryParser
functionArguments.put(arg.getName(), arg); functionArguments.put(arg.getName(), arg);
String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyId().getId() : definition.getPropertyId().getId(); String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyId().getId() : definition.getPropertyId().getId();
Column column = factory.createColumn(function, functionArguments, alias); Column column = factory.createColumn(function, functionArguments, alias);
if (column.isQueryable()) columns.add(column);
{
columns.add(column);
}
} }
} }
} }
@@ -951,10 +948,7 @@ public class CMISQueryParser
functionArguments.put(arg.getName(), arg); functionArguments.put(arg.getName(), arg);
String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyId().getId() : definition.getPropertyId().getId(); String alias = (selector.getAlias().length() > 0) ? selector.getAlias() + "." + definition.getPropertyId().getId() : definition.getPropertyId().getId();
Column column = factory.createColumn(function, functionArguments, alias); Column column = factory.createColumn(function, functionArguments, alias);
if (column.isQueryable()) columns.add(column);
{
columns.add(column);
}
} }
} }
@@ -1013,12 +1007,6 @@ public class CMISQueryParser
} }
Column column = factory.createColumn(function, functionArguments, alias); Column column = factory.createColumn(function, functionArguments, alias);
if (!column.isQueryable())
{
throw new CMISQueryException("Column is not queryable " + typeDef.getQueryName() + "." + columnName);
}
columns.add(column); columns.add(column);
} }

View File

@@ -48,13 +48,26 @@ import org.alfresco.cmis.CMISTypeDefinition;
import org.alfresco.cmis.CMISQueryOptions.CMISQueryMode; import org.alfresco.cmis.CMISQueryOptions.CMISQueryMode;
import org.alfresco.cmis.dictionary.CMISAbstractDictionaryService; import org.alfresco.cmis.dictionary.CMISAbstractDictionaryService;
import org.alfresco.cmis.mapping.BaseCMISTest; import org.alfresco.cmis.mapping.BaseCMISTest;
import org.alfresco.cmis.mapping.BaseTypeIdProperty;
import org.alfresco.cmis.mapping.CheckinCommentProperty;
import org.alfresco.cmis.mapping.ContentStreamIdProperty;
import org.alfresco.cmis.mapping.ContentStreamLengthProperty; import org.alfresco.cmis.mapping.ContentStreamLengthProperty;
import org.alfresco.cmis.mapping.ContentStreamMimetypeProperty; import org.alfresco.cmis.mapping.ContentStreamMimetypeProperty;
import org.alfresco.cmis.mapping.DirectProperty; import org.alfresco.cmis.mapping.DirectProperty;
import org.alfresco.cmis.mapping.FixedValueProperty;
import org.alfresco.cmis.mapping.IsImmutableProperty;
import org.alfresco.cmis.mapping.IsLatestMajorVersionProperty;
import org.alfresco.cmis.mapping.IsLatestVersionProperty;
import org.alfresco.cmis.mapping.IsMajorVersionProperty;
import org.alfresco.cmis.mapping.IsVersionSeriesCheckedOutProperty;
import org.alfresco.cmis.mapping.ObjectIdProperty; import org.alfresco.cmis.mapping.ObjectIdProperty;
import org.alfresco.cmis.mapping.ObjectTypeIdProperty; import org.alfresco.cmis.mapping.ObjectTypeIdProperty;
import org.alfresco.cmis.mapping.ParentProperty; import org.alfresco.cmis.mapping.ParentProperty;
import org.alfresco.cmis.mapping.PathProperty;
import org.alfresco.cmis.mapping.VersionLabelProperty; import org.alfresco.cmis.mapping.VersionLabelProperty;
import org.alfresco.cmis.mapping.VersionSeriesCheckedOutByProperty;
import org.alfresco.cmis.mapping.VersionSeriesCheckedOutIdProperty;
import org.alfresco.cmis.mapping.VersionSeriesIdProperty;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.dictionary.M2Model; import org.alfresco.repo.dictionary.M2Model;
import org.alfresco.repo.node.BaseNodeServiceTest; import org.alfresco.repo.node.BaseNodeServiceTest;
@@ -337,7 +350,7 @@ public class QueryTest extends BaseCMISTest
properties5.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK)); properties5.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
properties5.put(ContentModel.PROP_DESCRIPTION, desc5); properties5.put(ContentModel.PROP_DESCRIPTION, desc5);
properties5.put(ContentModel.PROP_TITLE, desc5); properties5.put(ContentModel.PROP_TITLE, desc5);
properties5.put(ContentModel.PROP_NAME, "EE"); properties5.put(ContentModel.PROP_NAME, "EE.aa");
properties5.put(ContentModel.PROP_CREATED, new Date()); properties5.put(ContentModel.PROP_CREATED, new Date());
c5 = nodeService.createNode(f5, ContentModel.ASSOC_CHILDREN, QName.createQName("cm", "Five", namespaceService), ContentModel.TYPE_CONTENT, properties5).getChildRef(); c5 = nodeService.createNode(f5, ContentModel.ASSOC_CHILDREN, QName.createQName("cm", "Five", namespaceService), ContentModel.TYPE_CONTENT, properties5).getChildRef();
@@ -350,7 +363,7 @@ public class QueryTest extends BaseCMISTest
Map<QName, Serializable> lockProperties = new HashMap<QName, Serializable>(); Map<QName, Serializable> lockProperties = new HashMap<QName, Serializable>();
lockProperties.put(ContentModel.PROP_EXPIRY_DATE, DefaultTypeConverter.INSTANCE.convert(Date.class, "2012-12-12T12:12:12.012Z")); lockProperties.put(ContentModel.PROP_EXPIRY_DATE, DefaultTypeConverter.INSTANCE.convert(Date.class, "2012-12-12T12:12:12.012Z"));
lockProperties.put(ContentModel.PROP_LOCK_OWNER, "andy"); lockProperties.put(ContentModel.PROP_LOCK_OWNER, "andy");
lockProperties.put(ContentModel.PROP_LOCK_TYPE, "test"); lockProperties.put(ContentModel.PROP_LOCK_TYPE, "WRITE_LOCK");
nodeService.addAspect(c5, ContentModel.ASPECT_LOCKABLE, lockProperties); nodeService.addAspect(c5, ContentModel.ASPECT_LOCKABLE, lockProperties);
@@ -361,7 +374,7 @@ public class QueryTest extends BaseCMISTest
properties6.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK)); properties6.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK));
properties6.put(ContentModel.PROP_DESCRIPTION, desc6); properties6.put(ContentModel.PROP_DESCRIPTION, desc6);
properties6.put(ContentModel.PROP_TITLE, desc6); properties6.put(ContentModel.PROP_TITLE, desc6);
properties6.put(ContentModel.PROP_NAME, "FF"); properties6.put(ContentModel.PROP_NAME, "FF.EE");
properties6.put(ContentModel.PROP_CREATED, new Date()); properties6.put(ContentModel.PROP_CREATED, new Date());
c6 = nodeService.createNode(f6, ContentModel.ASSOC_CHILDREN, QName.createQName("cm", "Six", namespaceService), ContentModel.TYPE_CONTENT, properties6).getChildRef(); c6 = nodeService.createNode(f6, ContentModel.ASSOC_CHILDREN, QName.createQName("cm", "Six", namespaceService), ContentModel.TYPE_CONTENT, properties6).getChildRef();
ContentWriter writer6 = contentService.getWriter(c6, ContentModel.PROP_CONTENT, true); ContentWriter writer6 = contentService.getWriter(c6, ContentModel.PROP_CONTENT, true);
@@ -539,15 +552,13 @@ public class QueryTest extends BaseCMISTest
assertEquals(folder_count, rs.length()); assertEquals(folder_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable
Serializable sValue = row.getValue("cmis:allowedChildObjectTypeIds"); Serializable sValue = row.getValue("cmis:allowedChildObjectTypeIds");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:allowedChildObjectTypeIds"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:allowedChildObjectTypeIds");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.MULTI_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.MULTI_VALUED, column.getCMISPropertyDefinition().getCardinality());
} }
rs.close(); rs.close();
@@ -610,7 +621,6 @@ public class QueryTest extends BaseCMISTest
Serializable sValue = row.getValue("cmis:parentId"); Serializable sValue = row.getValue("cmis:parentId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNotNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:parentId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:parentId");
assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
@@ -674,16 +684,16 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:path"); Serializable sValue = row.getValue("cmis:path");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:path"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:path");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof PathProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof PathProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:path FROM cmis:folder", folder_count, false, "cmis:path", new String(), true); testQuery("SELECT cmis:path FROM cmis:folder", folder_count, false, "cmis:path", new String(), false);
testQuery("SELECT cmis:path FROM cmis:folder WHERE cmis:path = 'anything'", folder_count, false, "cmis:path", new String(), true); testQuery("SELECT cmis:path FROM cmis:folder WHERE cmis:path = 'anything'", folder_count, false, "cmis:path", new String(), true);
} }
@@ -699,13 +709,14 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:contentStreamId"); Serializable sValue = row.getValue("cmis:contentStreamId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value); ContentData cd = DefaultTypeConverter.INSTANCE.convert(ContentData.class, nodeService.getProperty(row.getNodeRef(), ContentModel.PROP_CONTENT));
assertEquals(cd.getContentUrl(), value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty);
} }
rs.close(); rs.close();
@@ -718,17 +729,17 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:contentStreamId"); Serializable sValue = row.getValue("cmis:contentStreamId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(contentUrl0, value); assertEquals(contentUrl0, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof ContentStreamIdProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:contentStreamId FROM cmis:document", file_count, false, "cmis:contentStreamId", new String(), true); testQuery("SELECT cmis:contentStreamId FROM cmis:document", file_count, false, "cmis:contentStreamId", new String(), false);
// not allowed in predicates // not allowed in predicates
testQuery("SELECT cmis:contentStreamId FROM cmis:document WHERE cmis:contentStreamId = '" + contentUrl0 + "'", 1, false, "cmis:contentStreamId", new String(), true); testQuery("SELECT cmis:contentStreamId FROM cmis:document WHERE cmis:contentStreamId = '" + contentUrl0 + "'", 1, false, "cmis:contentStreamId", new String(), true);
@@ -747,7 +758,6 @@ public class QueryTest extends BaseCMISTest
Serializable sValue = row.getValue("cmis:contentStreamFileName"); Serializable sValue = row.getValue("cmis:contentStreamFileName");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNotNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamFileName"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamFileName");
assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
@@ -779,8 +789,8 @@ public class QueryTest extends BaseCMISTest
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'BB_'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'BB_'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'CC\\\\'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'CC\\\\'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'DD\\''", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'DD\\''", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'EE'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'EE.aa'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'FF'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'FF.EE'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'GG*GG'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'GG*GG'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'HH?HH'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'HH?HH'", 1, false, "cmis:contentStreamFileName", new String(), false);
testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'aa'", 1, false, "cmis:contentStreamFileName", new String(), false); testQuery("SELECT cmis:contentStreamFileName FROM cmis:document WHERE cmis:contentStreamFileName = 'aa'", 1, false, "cmis:contentStreamFileName", new String(), false);
@@ -842,7 +852,6 @@ public class QueryTest extends BaseCMISTest
Serializable sValue = row.getValue("cmis:contentStreamMimeType"); Serializable sValue = row.getValue("cmis:contentStreamMimeType");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNotNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamMimeType"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamMimeType");
assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
@@ -925,7 +934,6 @@ public class QueryTest extends BaseCMISTest
Serializable sValue = row.getValue("cmis:contentStreamLength"); Serializable sValue = row.getValue("cmis:contentStreamLength");
Long value = DefaultTypeConverter.INSTANCE.convert(Long.class, sValue); Long value = DefaultTypeConverter.INSTANCE.convert(Long.class, sValue);
assertNotNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamLength"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:contentStreamLength");
assertEquals(CMISDataTypeEnum.INTEGER, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.INTEGER, column.getCMISDataType());
assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
@@ -987,19 +995,19 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable
Serializable sValue = row.getValue("cmis:checkinComment"); Serializable sValue = row.getValue("cmis:checkinComment");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:checkinComment"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:checkinComment");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:checkinComment FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment = 'admin'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment = 'admin'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment <> 'admin'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment <> 'admin'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment < 'admin'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:checkinComment FROM cmis:document WHERE cmis:checkinComment < 'admin'", 0, false, "cmis:objectId", new String(), true);
@@ -1036,18 +1044,18 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable
Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutId"); Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesCheckedOutIdProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId = 'admin'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId = 'admin'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId <> 'admin'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesCheckedOutId FROM cmis:document WHERE cmis:versionSeriesCheckedOutId <> 'admin'", 10, false, "cmis:objectId", new String(), true);
@@ -1087,18 +1095,18 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable
Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutBy"); Serializable sValue = row.getValue("cmis:versionSeriesCheckedOutBy");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutBy"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesCheckedOutBy");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesCheckedOutByProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy = 'admin'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy = 'admin'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy <> 'admin'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesCheckedOutBy FROM cmis:document WHERE cmis:versionSeriesCheckedOutBy <> 'admin'", 10, false, "cmis:objectId", new String(), true);
@@ -1138,44 +1146,45 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable Serializable sValue = row.getValue("cmis:isVersionSeriesCheckedOut");
Serializable sValue = row.getValue("cmis:isVeriesSeriesCheckedOut"); Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); assertNotNull(value);
assertNull(value); assertEquals(Boolean.FALSE, value);
// assertEquals(Boolean.TRUE, value); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isVersionSeriesCheckedOut");
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isVeriesSeriesCheckedOut"); assertNotNull(column);
assertNull(column); assertEquals(CMISDataTypeEnum.BOOLEAN, column.getCMISDataType());
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsVersionSeriesCheckedOutProperty);
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof CheckinCommentProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut = 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <> 'TRUE'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut < 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <= 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <> 'TRUE'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut > 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut >= 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut <= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut > 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut >= 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut LIKE 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT LIKE 'TRUE'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut NOT LIKE 'TRUE'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NOT NULL", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NOT NULL", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NULL", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE cmis:isVeriesSeriesCheckedOut IS NULL", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' = ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' = ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <> ANY cmis:isVeriesSeriesCheckedOut", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <> ANY cmis:isVeriesSeriesCheckedOut", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' < ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' < ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' <= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' > ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' > ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE 'TRUE' >= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE 'TRUE' >= ANY cmis:isVeriesSeriesCheckedOut", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut IN ('TRUE')", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isVeriesSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isVersionSeriesCheckedOut FROM cmis:document WHERE ANY cmis:isVeriesSeriesCheckedOut NOT IN ('TRUE')", 10, false, "cmis:objectId", new String(), true);
} }
public void test_VERSION_SERIES_ID() throws Exception public void test_VERSION_SERIES_ID() throws Exception
@@ -1189,16 +1198,19 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:versionSeriesId"); Serializable sValue = row.getValue("cmis:versionSeriesId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(row.getNodeRef().toString(), value); assertEquals(row.getNodeRef().toString(), value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionSeriesId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesIdProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionSeriesIdProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:versionSeriesId FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId = 'company'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId = 'company'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId <> 'company'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId <> 'company'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId < 'company'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionSeriesId FROM cmis:document WHERE cmis:versionSeriesId < 'company'", 0, false, "cmis:objectId", new String(), true);
@@ -1235,14 +1247,18 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// NOt queryable
Serializable sValue = row.getValue("cmis:versionLabel"); Serializable sValue = row.getValue("cmis:versionLabel");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionLabel"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:versionLabel");
assertNull(column); assertNotNull(column);
assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof VersionLabelProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:versionLabel FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel = 'company'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel = 'company'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel <> 'company'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:versionLabel FROM cmis:document WHERE cmis:versionLabel <> 'company'", 10, false, "cmis:objectId", new String(), true);
@@ -1280,18 +1296,19 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// NOt queryable
Serializable sValue = row.getValue("cmis:isLatestMajorVersion"); Serializable sValue = row.getValue("cmis:isLatestMajorVersion");
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue); Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value); assertEquals(Boolean.FALSE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestMajorVersion"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestMajorVersion");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.BOOLEAN, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsLatestMajorVersionProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isLatestMajorVersion FROM cmis:document WHERE cmis:isLatestMajorVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
@@ -1329,19 +1346,20 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// NOt queryable
Serializable sValue = row.getValue("cmis:isMajorVersion"); Serializable sValue = row.getValue("cmis:isMajorVersion");
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue); Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value); assertEquals(Boolean.FALSE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isMajorVersion"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isMajorVersion");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.BOOLEAN, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsMajorVersionProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:isMajorVersion FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = TRUE", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = TRUE", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = true", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = true", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = FALSE", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isMajorVersion FROM cmis:document WHERE cmis:isMajorVersion = FALSE", 0, false, "cmis:objectId", new String(), true);
@@ -1381,18 +1399,19 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// NOt queryable
Serializable sValue = row.getValue("cmis:isLatestVersion"); Serializable sValue = row.getValue("cmis:isLatestVersion");
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue); Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value); assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestVersion"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isLatestVersion");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.BOOLEAN, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsLatestVersionProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:isLatestVersion FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isLatestVersion FROM cmis:document WHERE cmis:isLatestVersion <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
@@ -1430,19 +1449,20 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// NOt queryable
Serializable sValue = row.getValue("cmis:isImmutable"); Serializable sValue = row.getValue("cmis:isImmutable");
Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue); Boolean value = DefaultTypeConverter.INSTANCE.convert(Boolean.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals(Boolean.TRUE, value); assertEquals(Boolean.FALSE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isImmutable"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:isImmutable");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.BOOLEAN, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof IsImmutableProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:isImmutable FROM cmis:document", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable = 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable = 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable <> 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable <> 'TRUE'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable < 'TRUE'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:isImmutable FROM cmis:document WHERE cmis:isImmutable < 'TRUE'", 0, false, "cmis:objectId", new String(), true);
@@ -1611,19 +1631,19 @@ public class QueryTest extends BaseCMISTest
assertEquals(file_count, rs.length()); assertEquals(file_count, rs.length());
for (CMISResultSetRow row : rs) for (CMISResultSetRow row : rs)
{ {
// not queryable
Serializable sValue = row.getValue("cmis:changeToken"); Serializable sValue = row.getValue("cmis:changeToken");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNull(value);
// assertEquals(Boolean.TRUE, value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:changeToken"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:changeToken");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.STRING, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof DirectProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof FixedValueProperty);
} }
rs.close(); rs.close();
testQuery("SELECT cmis:changeToken FROM cmis:folder", 10, false, "cmis:objectId", new String(), false);
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken = 'test'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken = 'test'", 0, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken <> 'test'", 10, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken <> 'test'", 10, false, "cmis:objectId", new String(), true);
testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken < 'test'", 0, false, "cmis:objectId", new String(), true); testQuery("SELECT cmis:changeToken FROM cmis:folder WHERE cmis:changeToken < 'test'", 0, false, "cmis:objectId", new String(), true);
@@ -2240,13 +2260,13 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:baseTypeId"); Serializable sValue = row.getValue("cmis:baseTypeId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals("cmis:document", value); assertEquals("cmis:document", value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty);
} }
rs.close(); rs.close();
@@ -2259,21 +2279,21 @@ public class QueryTest extends BaseCMISTest
{ {
Serializable sValue = row.getValue("cmis:baseTypeId"); Serializable sValue = row.getValue("cmis:baseTypeId");
String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue); String value = DefaultTypeConverter.INSTANCE.convert(String.class, sValue);
assertNull(value); assertNotNull(value);
// assertEquals("cmis:folder", value); assertEquals("cmis:folder", value);
CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId"); CMISResultSetColumn column = rs.getResultSetMetaData().getColumn("cmis:baseTypeId");
assertNull(column); assertNotNull(column);
// assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType()); assertEquals(CMISDataTypeEnum.ID, column.getCMISDataType());
// assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality()); assertEquals(CMISCardinalityEnum.SINGLE_VALUED, column.getCMISPropertyDefinition().getCardinality());
// assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty); assertTrue(column.getCMISPropertyDefinition().getPropertyAccessor() instanceof BaseTypeIdProperty);
} }
rs.close(); rs.close();
// DOC // DOC
testQuery("SELECT cmis:baseTypeId FROM cmis:document", file_count, false, "cmis:baseTypeId", new String(), true); testQuery("SELECT cmis:baseTypeId FROM cmis:document", file_count, false, "cmis:baseTypeId", new String(), false);
testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId = 'cmis:document'", file_count, false, "cmis:baseTypeId", new String(), true); testQuery("SELECT cmis:baseTypeId FROM cmis:document WHERE cmis:baseTypeId = 'cmis:document'", file_count, false, "cmis:baseTypeId", new String(), true);
testQuery("SELECT cmis:baseTypeId FROM cmis:folder", folder_count, false, "cmis:baseTypeId", new String(), true); testQuery("SELECT cmis:baseTypeId FROM cmis:folder", folder_count, false, "cmis:baseTypeId", new String(), false);
testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:folder'", folder_count, false, "cmis:baseTypeId", new String(), true); testQuery("SELECT cmis:baseTypeId FROM cmis:folder WHERE cmis:baseTypeId = 'cmis:folder'", folder_count, false, "cmis:baseTypeId", new String(), true);
} }
@@ -2453,6 +2473,10 @@ public class QueryTest extends BaseCMISTest
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name"); testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name ASC", folder_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:name"); testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name"); testOrderBy("SELECT cmis:name FROM cmis:folder ORDER BY cmis:name DESC", folder_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name ASC", file_count, false, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name DESC", file_count, false, Order.DESCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
testOrderBy("SELECT cmis:name FROM cmis:document ORDER BY cmis:name DESC", file_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:name");
// version label is not orderable as indexed and tokenised // version label is not orderable as indexed and tokenised
testOrderBy("SELECT cmis:versionLabel FROM cmis:document ORDER BY cmis:versionLabel ASC", file_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:versionLabel"); testOrderBy("SELECT cmis:versionLabel FROM cmis:document ORDER BY cmis:versionLabel ASC", file_count, true, Order.ASCENDING, CMISQueryMode.CMS_STRICT, "cmis:versionLabel");
@@ -2983,11 +3007,8 @@ public class QueryTest extends BaseCMISTest
CMISTypeDefinition typeDef = cmisDictionaryService.findType(CMISDictionaryModel.DOCUMENT_TYPE_ID); CMISTypeDefinition typeDef = cmisDictionaryService.findType(CMISDictionaryModel.DOCUMENT_TYPE_ID);
int count = 0; int count = 0;
for (CMISPropertyDefinition pdef : typeDef.getPropertyDefinitions().values()) for (CMISPropertyDefinition pdef : typeDef.getPropertyDefinitions().values())
{ {
if (pdef.isQueryable()) count++;
{
count++;
}
} }
assertEquals(count, md.getColumnNames().length); assertEquals(count, md.getColumnNames().length);
assertNotNull(md.getColumn(CMISDictionaryModel.PROP_OBJECT_ID)); assertNotNull(md.getColumn(CMISDictionaryModel.PROP_OBJECT_ID));