@Override public QueryBuilder maxResults(int maxResults) { return getQueryBuilder().maxResults(maxResults); }
@Override public QueryBuilder maxResults(int maxResults) { return getQueryBuilder().maxResults(maxResults); }
@Override public Map<Location, Set<String>> getAllMissing() { logger.debug( "[NFC] getAllMissing start" ); Map<Location, Set<String>> result = new HashMap<>(); Query query = queryFactory.from( NfcConcreteResourceWrapper.class ) .maxResults( maxResultSetSize ) .build(); List<NfcConcreteResourceWrapper> all = query.list(); for ( NfcConcreteResourceWrapper entry : all ) { String loc = entry.getLocation(); StoreKey storeKey = fromString( loc ); Set<String> paths = result.computeIfAbsent( new NfcKeyedLocation( storeKey ), k -> new HashSet<>() ); paths.add( entry.getPath() ); } logger.debug( "[NFC] getAllMissing complete, size: {}", all.size() ); return result; }
@Override public Set<String> getMissing( final Location location ) { logger.debug( "[NFC] getMissing for {} start", location ); Set<String> paths = new HashSet<>(); Query query = queryFactory.from( NfcConcreteResourceWrapper.class ) .maxResults( maxResultSetSize ) .having( "location" ) .eq( ( (KeyedLocation) location ).getKey().toString() ) .toBuilder() .build(); List<NfcConcreteResourceWrapper> matches = query.list(); matches.forEach( resource -> paths.add( resource.getPath() )); logger.debug( "[NFC] getMissing complete, count: {}", matches.size() ); return paths; }
@Override public Map<Location, Set<String>> getAllMissing( int pageIndex, int pageSize ) { logger.debug( "[NFC] getAllMissing start, pageIndex: {}, pageSize: {}", pageIndex, pageSize ); Map<Location, Set<String>> result = new HashMap<>(); pageSize = getProperPageSize(pageSize); long offset = pageIndex * pageSize; Query query = queryFactory.from( NfcConcreteResourceWrapper.class ) .startOffset( offset ) .maxResults( pageSize ) .orderBy( "location" ) .orderBy( "path" ) .build(); List<NfcConcreteResourceWrapper> all = query.list(); for ( NfcConcreteResourceWrapper entry : all ) { String loc = entry.getLocation(); StoreKey storeKey = fromString( loc ); Set<String> paths = result.computeIfAbsent( new NfcKeyedLocation( storeKey ), k -> new HashSet<>() ); paths.add( entry.getPath() ); } logger.debug( "[NFC] getAllMissing complete, size: {}", all.size() ); return result; }
/** * Get missing entries via pagination. * @param location * @param pageIndex starts from 0 * @param pageSize how many entries in each page * @return */ @Override public Set<String> getMissing( Location location, int pageIndex, int pageSize ) { logger.debug( "[NFC] getMissing for {} start, pageIndex: {}, pageSize: {}", location, pageIndex, pageSize ); Set<String> paths = new HashSet<>(); pageSize = getProperPageSize(pageSize); long offset = pageIndex * pageSize; Query query = queryFactory.from( NfcConcreteResourceWrapper.class ) .startOffset( offset ) .maxResults( pageSize ) .orderBy( "path" ) .having( "location" ) .eq( ( (KeyedLocation) location ).getKey().toString() ) .toBuilder() .build(); List<NfcConcreteResourceWrapper> matches = query.list(); matches.forEach( resource -> paths.add( resource.getPath() ) ); logger.debug( "[NFC] getMissing complete, count: {}", matches.size() ); return paths; }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "ISPN014823: maxResults must be greater than 0") public void testPagination1() { QueryFactory qf = getQueryFactory(); qf.from(getModelFactory().getUserImplClass()) .maxResults(0); }
@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "ISPN014823: maxResults must be greater than 0") public void testPagination2() { QueryFactory qf = getQueryFactory(); qf.from(getModelFactory().getUserImplClass()) .maxResults(-4); }
public void testUnorderedPagination4() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .maxResults(5) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(3, list.size()); }
@Override @Measure public void clearAllIndexedPathWithOriginalStore( ArtifactStore originalStore ) { StoreKey osk = originalStore.getKey(); long total = iterateRemove( () -> queryFactory.from( IndexedStorePath.class ) .maxResults( ITERATE_RESULT_SIZE ) .having( "packageType" ) .eq( osk.getPackageType() ) .and() .having( "originStoreType" ) .eq( osk.getType().name() ) .and() .having( "originStoreName" ) .eq( osk.getName() ) .toBuilder() .build() ); logger.trace( "Cleared all indices with origin: {}, size: {}", osk, total ); }
public void testUnorderedPagination7() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .startOffset(1).maxResults(10) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(2, list.size()); }
public void testOrderedPagination4() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .orderBy("id", SortOrder.ASC) .maxResults(5) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(3, list.size()); }
public void testUnorderedPagination8() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .startOffset(0).maxResults(2) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(2, list.size()); }
@Override @Measure public void clearAllIndexedPathInStore( ArtifactStore store ) { StoreKey sk = store.getKey(); long total = iterateRemove( () -> queryFactory.from( IndexedStorePath.class ) .maxResults( ITERATE_RESULT_SIZE ) .having( "packageType" ) .eq( sk.getPackageType() ) .and() .having( "storeType" ) .eq( sk.getType().name() ) .and() .having( "storeName" ) .eq( sk.getName() ) .toBuilder() .build() ); logger.trace( "Cleared all indices with group: {}, size: {}", sk, total ); }
public void testUnorderedPagination6() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .startOffset(20).maxResults(10) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(0, list.size()); }
public void testOrderedPagination6() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .orderBy("id", SortOrder.ASC) .startOffset(20).maxResults(10) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(0, list.size()); }
public void testOrderedPagination7() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .orderBy("id", SortOrder.ASC) .startOffset(1).maxResults(10) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(2, list.size()); }
public void testOrderedPagination8() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .orderBy("id", SortOrder.ASC) .startOffset(0).maxResults(2) .build(); List<User> list = q.list(); assertEquals(3, q.getResultSize()); assertEquals(2, list.size()); }
public void testSampleDomainQuery16() { QueryFactory qf = getQueryFactory(); // third batch of 10 transactions for a given account Query q = qf.from(getModelFactory().getTransactionImplClass()) .startOffset(20).maxResults(10) .orderBy("id", SortOrder.ASC) .having("accountId").eq(2).and().having("description").like("Expensive%") .build(); List<Transaction> list = q.list(); assertEquals(50, q.getResultSize()); assertEquals(10, list.size()); for (int i = 0; i < 10; i++) { assertEquals("Expensive shoes " + (20 + i), list.get(i).getDescription()); } }
@Override @Measure public void clearAllIndexedPathInStoreWithOriginal( ArtifactStore store, ArtifactStore originalStore ) { StoreKey sk = store.getKey(); StoreKey osk = originalStore.getKey(); long total = iterateRemove( () -> queryFactory.from( IndexedStorePath.class ) .maxResults( ITERATE_RESULT_SIZE ) .having( "packageType" ) .eq( osk.getPackageType() ) .and() .having( "storeType" ) .eq( sk.getType().name() ) .and() .having( "storeName" ) .eq( sk.getName() ) .and() .having( "originStoreType" ) .eq( osk.getType().name() ) .and() .having( "originStoreName" ) .eq( osk.getName() ) .toBuilder() .build() ); logger.trace( "Cleared all indices with origin: {} and group: {}, size: {}", osk, sk, total ); }