@Override public ObjectQuery build() { if (typeRestriction != null || existsRestriction != null) { // unfinished empty type restriction or exists restriction return addSubfilter(null).build(); } if (parentFilter != null) { throw new IllegalStateException("A block in filter definition was probably not closed."); } ObjectPaging paging = null; if (!orderingList.isEmpty()) { paging = createIfNeeded(null); paging.setOrdering(orderingList); } if (offset != null) { paging = createIfNeeded(paging); paging.setOffset(offset); } if (maxSize != null) { paging = createIfNeeded(paging); paging.setMaxSize(maxSize); } return ObjectQueryImpl.createObjectQuery(simplify(currentFilter), paging); }
@Test public void test180SearchNullPagingOffset0Size3() throws Exception { final String TEST_NAME = "test180SearchNullPagingSize5"; displayTestTitle(TEST_NAME); ObjectPaging paging = prismContext.queryFactory().createPaging(0,3); paging.setOrdering(createAttributeOrdering(SchemaConstants.ICFS_NAME)); SearchResultMetadata searchMetadata = testSeachIterativePaging(TEST_NAME, null, paging, null, getSortedUsernames18x(0,3)); assertApproxNumberOfAllResults(searchMetadata, getTest18xApproxNumberOfSearchResults()); }
@Test public void test183SearchNullPagingOffset2Size3Desc() throws Exception { final String TEST_NAME = "test183SearchNullPagingOffset1Size3Desc"; displayTestTitle(TEST_NAME); ObjectPaging paging = prismContext.queryFactory().createPaging(2,3); paging.setOrdering(createAttributeOrdering(SchemaConstants.ICFS_NAME, OrderDirection.DESCENDING)); SearchResultMetadata searchMetadata = testSeachIterativePaging(TEST_NAME, null, paging, null, getSortedUsernames18xDesc(2,3)); assertApproxNumberOfAllResults(searchMetadata, getTest18xApproxNumberOfSearchResults()); }
@Test public void test182SearchNullPagingOffset1Size2() throws Exception { final String TEST_NAME = "test182SearchNullPagingOffset1Size2"; displayTestTitle(TEST_NAME); ObjectPaging paging = prismContext.queryFactory().createPaging(1,2); paging.setOrdering(createAttributeOrdering(SchemaConstants.ICFS_NAME)); SearchResultMetadata searchMetadata = testSeachIterativePaging(TEST_NAME, null, paging, null, getSortedUsernames18x(1,2)); assertApproxNumberOfAllResults(searchMetadata, getTest18xApproxNumberOfSearchResults()); }
/** * Reverse sort order, so we are sure that this thing is really sorting * and not just returning data in alphabetical order by default. */ @Test public void test181SearchNullPagingOffset0Size3Desc() throws Exception { final String TEST_NAME = "test181SearchNullPagingOffset0Size3Desc"; displayTestTitle(TEST_NAME); ObjectPaging paging = prismContext.queryFactory().createPaging(0,3); paging.setOrdering(createAttributeOrdering(SchemaConstants.ICFS_NAME, OrderDirection.DESCENDING)); SearchResultMetadata searchMetadata = testSeachIterativePaging(TEST_NAME, null, paging, null, getSortedUsernames18xDesc(0,3)); assertApproxNumberOfAllResults(searchMetadata, getTest18xApproxNumberOfSearchResults()); }
@Test public void test234SearchObjectsPagedOffsetSortSn() throws Exception { final String TEST_NAME = "test234SearchObjectsPagedOffsetSortSn"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE); ObjectQuery query = getQueryConverter().createObjectQuery(ShadowType.class, queryType); ObjectPaging paging = prismContext.queryFactory().createPaging(2, 4); paging.setOrdering(prismContext.queryFactory().createOrdering( ItemPath.create(ShadowType.F_ATTRIBUTES, new QName(RESOURCE_NS, "sn")), OrderDirection.ASCENDING)); query.setPaging(paging); rememberCounter(InternalCounters.CONNECTOR_OPERATION_COUNT); rememberCounter(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT); // WHEN displayWhen(TEST_NAME); List<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); result.computeStatus(); assertSuccess(result); display("Search resutls", searchResults); assertSearchResults(searchResults, "jbeckett", "jbond", "cook", "drake" ); assertConnectorOperationIncrement(1, 9); assertCounterIncrement(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT, 0); }
@Test public void test233SearchObjectsPagedNoOffsetSortSn() throws Exception { final String TEST_NAME = "test233SearchObjectsPagedNoOffsetSortSn"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE); ObjectQuery query = getQueryConverter().createObjectQuery(ShadowType.class, queryType); ObjectPaging paging = prismContext.queryFactory().createPaging(null, 4); paging.setOrdering(prismContext.queryFactory().createOrdering( ItemPath.create(ShadowType.F_ATTRIBUTES, new QName(RESOURCE_NS, "sn")), OrderDirection.ASCENDING)); query.setPaging(paging); rememberCounter(InternalCounters.CONNECTOR_OPERATION_COUNT); rememberCounter(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT); // WHEN displayWhen(TEST_NAME); SearchResultList<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result); // THEN displayThen(TEST_NAME); result.computeStatus(); assertSuccess(result); display("Search resutls", searchResults); assertSearchResults(searchResults, "monk", "hbarbossa", "jbeckett", "jbond" ); assertConnectorOperationIncrement(1, 9); assertCounterIncrement(InternalCounters.CONNECTOR_SIMULATED_PAGING_SEARCH_COUNT, 0); // null offset means SPR search means no estimate assertApproxNumberOfAllResults(searchResults.getMetadata(), null); }