blob: 436e1742949a5ef70f50f94239e7014f92b593de [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.chemistry.opencmis.inmemory;
import static org.junit.Assert.assertEquals;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import org.apache.chemistry.opencmis.commons.data.ObjectList;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
import org.apache.chemistry.opencmis.inmemory.ObjectServiceTest.ObjectTestTypeSystemCreator;
import org.apache.chemistry.opencmis.util.repository.ObjectGenerator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DiscoveryServiceTest extends AbstractServiceTest {
private static final Logger log = LoggerFactory.getLogger(DiscoveryServiceTest.class);
private static final String TEST_FOLDER_TYPE_ID = ObjectServiceTest.TEST_FOLDER_TYPE_ID;
private static final String TEST_DOCUMENT_TYPE_ID = ObjectServiceTest.TEST_DOCUMENT_TYPE_ID;
private static final String TEST_FOLDER_STRING_PROP_ID = ObjectServiceTest.TEST_FOLDER_STRING_PROP_ID;
private static final String TEST_DOCUMENT_STRING_PROP_ID = ObjectServiceTest.TEST_DOCUMENT_STRING_PROP_ID;
@Override
@Before
public void setUp() {
super.setTypeCreatorClass(ObjectTestTypeSystemCreator.class.getName());
super.setUp();
}
@Override
@After
public void tearDown() {
super.tearDown();
}
@Test
public void testQuery() {
log.info("starting testQuery() ...");
ObjectGenerator gen = new ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepSvc, fRepositoryId,
ObjectGenerator.ContentKind.LOREM_IPSUM_TEXT);
gen.setNumberOfDocumentsToCreatePerFolder(3);
gen.setDocumentTypeId(TEST_DOCUMENT_TYPE_ID);
gen.setFolderTypeId(TEST_FOLDER_TYPE_ID);
List<String> propsToSet = new ArrayList<String>();
propsToSet.add(TEST_DOCUMENT_STRING_PROP_ID);
gen.setDocumentPropertiesToGenerate(propsToSet);
propsToSet = new ArrayList<String>();
propsToSet.add(TEST_FOLDER_STRING_PROP_ID);
gen.setFolderPropertiesToGenerate(propsToSet);
gen.createFolderHierachy(2, 2, fRootFolderId);
Boolean searchAllVersions = Boolean.FALSE;
Boolean includeAllowableActions = Boolean.FALSE;
IncludeRelationships includeRelationships = IncludeRelationships.NONE;
String renditionFilter = null;
BigInteger maxItems = null;
BigInteger skipCount = null;
String statement = "SELECT * FROM " + TEST_DOCUMENT_TYPE_ID + " WHERE " + TEST_DOCUMENT_STRING_PROP_ID
+ "='My Doc StringProperty 1'";
ObjectList res = fDiscSvc.query(fRepositoryId, statement, searchAllVersions, includeAllowableActions,
includeRelationships, renditionFilter, maxItems, skipCount, null);
assertEquals(1, res.getObjects().size());
statement = "SELECT " + TEST_DOCUMENT_STRING_PROP_ID + " FROM " + TEST_DOCUMENT_TYPE_ID + " WHERE "
+ TEST_DOCUMENT_STRING_PROP_ID + "='My Doc StringProperty 1'";
res = fDiscSvc.query(fRepositoryId, statement, searchAllVersions, includeAllowableActions,
includeRelationships, renditionFilter, maxItems, skipCount, null);
assertEquals(1, res.getObjects().size());
assertEquals(1, res.getObjects().get(0).getProperties().getProperties().size()); // only
// one
// property
// should
// be
// delivered
statement = "SELECT * FROM cmis:folder";
res = fDiscSvc.query(fRepositoryId, statement, searchAllVersions, includeAllowableActions,
includeRelationships, renditionFilter, maxItems, skipCount, null);
// root + 2 at level 1 + 2*2 at level 2 = 7
assertEquals(7, res.getObjects().size());
/*
* assertEquals(BigInteger.valueOf(9), res.getNumItems());
*
* statement = "SELECT * FROM cmis:folder"; res =
* fDiscSvc.query(fRepositoryId, statement, searchAllVersions,
* includeAllowableActions, includeRelationships, renditionFilter,
* maxItems, skipCount, null); // root + 2 at level 1 + 2*2 at level 2 =
* 7 assertEquals(BigInteger.valueOf(7), res.getNumItems());
*
* statement = "SELECT * FROM cmis:folder"; res =
* fDiscSvc.query(fRepositoryId, statement, searchAllVersions,
* includeAllowableActions, includeRelationships, renditionFilter,
* maxItems, skipCount, null); // root + 2 at level 1 + 2*2 at level 2 =
* 7 assertEquals(BigInteger.valueOf(7), res.getNumItems());
*
* statement = "SELECT * FROM cmis:folder WHERE name='Jens'"; res =
* fDiscSvc.query(fRepositoryId, statement, searchAllVersions,
* includeAllowableActions, includeRelationships, renditionFilter,
* maxItems, skipCount, null); assertEquals(BigInteger.valueOf(0),
* res.getNumItems());
*/
log.info("... testQuery() finished.");
}
@Test
public void testQueryPaging() {
log.info("starting testQuery() ...");
String statement;
ObjectList res;
ObjectGenerator gen = new ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepSvc, fRepositoryId,
ObjectGenerator.ContentKind.LOREM_IPSUM_TEXT);
gen.setNumberOfDocumentsToCreatePerFolder(3);
gen.setDocumentTypeId(TEST_DOCUMENT_TYPE_ID);
gen.setFolderTypeId(TEST_FOLDER_TYPE_ID);
List<String> propsToSet = new ArrayList<String>();
propsToSet.add(TEST_DOCUMENT_STRING_PROP_ID);
gen.setDocumentPropertiesToGenerate(propsToSet);
propsToSet = new ArrayList<String>();
propsToSet.add(TEST_FOLDER_STRING_PROP_ID);
gen.setFolderPropertiesToGenerate(propsToSet);
gen.createFolderHierachy(2, 2, fRootFolderId);
Boolean searchAllVersions = Boolean.FALSE;
Boolean includeAllowableActions = Boolean.FALSE;
IncludeRelationships includeRelationships = IncludeRelationships.NONE;
String renditionFilter = null;
BigInteger skipCount = BigInteger.valueOf(0);
BigInteger maxItems = BigInteger.valueOf(3);
int count = 0;
boolean hasMoreItems = true;
statement = "SELECT * FROM cmis:document";
while (hasMoreItems) {
res = fDiscSvc.query(fRepositoryId, statement, searchAllVersions, includeAllowableActions,
includeRelationships, renditionFilter, maxItems, skipCount, null);
hasMoreItems = res.hasMoreItems();
assertEquals(3, res.getObjects().size());
if (res.getNumItems() != null) {
assertEquals(9L, res.getNumItems().longValue());
}
skipCount = skipCount.add(maxItems);
++count;
}
assertEquals(3, count);
}
}