// since we are setting up enduuid of 40th index
// we are expecting 41 objects
// as inclusive flag to true
Criteria criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(uuidList.get(40)));
criteria.setInclusive(true);
criteria.setLimit((long) (nDataItems / 3) - 10L);
//now test the count function
long count = om.count("object2", criteria);
assertEquals(41, count);
// since we are setting up enduuid we are expecting 40 objects
// as inclusive flag to false
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(uuidList.get(40)));
criteria.setInclusive(false);
criteria.setLimit((long) (nDataItems / 3) - 10L);
count = om.count("object2", criteria);
assertEquals(40, count);
// we are setting up enduuid as id of first object,
// with inclusive set to false
// we are expecting 0 objects
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(uuidList.get(0)));
criteria.setInclusive(false);
criteria.setLimit((long) (nDataItems / 3) - 10L);
count = om.count("object2", criteria);
assertEquals(0, count);
// we are setting up enduuid as id of first object,
// with inclusive set to true
// we are expecting 1 object
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(uuidList.get(0)));
criteria.setInclusive(true);
criteria.setLimit(1L);
count = om.count("object2", criteria);
assertEquals(1, count);
// simulating two page retrievals, like in the php side iterator
// assuming the page size is 100
// limit is pageSize + 1 , 101
// we should get 100 objects back in the last iteration
// ordering ASC
long pageSize = 100;
int nextItem = 0;
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setOrdering("ASC");
criteria.setLimit(pageSize + 1);
List<Map<String, Object>> dbObjects = om.list("object2", criteria);
assertEquals(pageSize + 1, dbObjects.size());
for (Map<String, Object> result : dbObjects) {
String dbObjectId = (String) result.get("id").toString();
if (nextItem == pageSize) {
break;
}
nextItem++;
}
String startUuid = dbObjects.get(nextItem).get("id").toString();
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setOrdering("ASC");
criteria.setStartUuid(UUID.fromString(startUuid));
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize, dbObjects.size());
// simulating two page retrievals, like in the php side iterator
// assuming the page size is 100
// limit is pageSize + 1 , 101
// we should get 100 objects back in the last iteration
// ordering DESC
nextItem = 0;
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize + 1, dbObjects.size());
for (Map<String, Object> result : dbObjects) {
String dbObjectId = (String) result.get("id").toString();
if (nextItem == pageSize) {
break;
}
nextItem++;
}
String endUuid = dbObjects.get(nextItem).get("id").toString();
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(endUuid));
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize, dbObjects.size());
// simulating two page retrievals, like in the php side iterator
// assuming the page size is 100
// limit is pageSize + 1 , 101
// we should get 100 objects back in the last iteration
// ordering DESC
// inclusive set to false
nextItem = 0;
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setInclusive(false);
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize + 1, dbObjects.size());
for (Map<String, Object> result : dbObjects) {
String dbObjectId = (String) result.get("id").toString();
if (nextItem == pageSize) {
break;
}
nextItem++;
}
endUuid = dbObjects.get(nextItem).get("id").toString();
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setEndUuid(UUID.fromString(endUuid));
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize, dbObjects.size());
// simulating two page retrievals, like in the php side iterator
// assuming the page size is 100
// limit is pageSize + 1 , 101
// we should get 100 objects back in the last iteration
// ordering ASC
// inclusive set to false
nextItem = 0;
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setInclusive(false);
criteria.setOrdering("ASC");
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize + 1, dbObjects.size());
for (Map<String, Object> result : dbObjects) {
String dbObjectId = (String) result.get("id").toString();
if (nextItem == pageSize) {
break;
}
nextItem++;
}
startUuid = dbObjects.get(nextItem).get("id").toString();
criteria = new Criteria();
criteria.setIndexKeys(indexValues);
criteria.setAllowFiltering(false);
criteria.setOrdering("ASC");
criteria.setStartUuid(UUID.fromString(startUuid));
criteria.setLimit(pageSize + 1);
dbObjects = om.list("object2", criteria);
assertEquals(pageSize, dbObjects.size());
cm.teardown();