public String getCursor() { return query.getCursor(); }
private void fanout(List<Work> result) { if (result.size() >= BATCH_SIZE) { enqueueNextBatch(worksQuery().getCursor()); } }
private void refluxSourcesFromSink() { QueryBuilder<SinkMarker> q = prepareQuery(); List<SinkMarker> sinkMarkers = q.list(); if (sinkMarkers.size() == BATCH_SIZE) { enqueueNextBatch(q.getCursor()); } refluxSources(sinkMarkers); }
private FetchOptions configureFetchOptions(QueryBuilder<?> builder) { FetchOptions fetchOptions = FetchOptions.Builder.withDefaults(); if (builder.getLimit() != null) { fetchOptions.limit(builder.getLimit()); } if (builder.getCursor() != null) { fetchOptions.startCursor(Cursor.fromWebSafeString(builder.getCursor())); } return fetchOptions; }
private List<T> executeQueryAt(int batchSize, int queryIndex) { QueryBuilder<?> q = getQueryAt(queryIndex); configureQuery(batchSize, q); List<T> list = executeQueryAt(queryIndex); cursor = q.getCursor(); return list; }
private <T> void updateCursor(QueryBuilder<?> builder, List<T> result) { if (result.size() == 0) { return; } T cursorObject = result.get(result.size() - 1); if (builder.getCursor() == null) { builder.setCursor(MockStore.createCursor(cursorObject)); } else { MockStore.updateCursor(builder.getCursor(), cursorObject); } }
private List<? extends IdRef<?>> sinkIds() { QueryBuilder<?> q = r.query(sinkClazz).order("id").limit(BATCH_SIZE); if (cursor != null) { q.cursor(cursor); } List<? extends IdRef<?>> ids = q.ids(); if (ids.size() < BATCH_SIZE) { cursor = null; } else { cursor = q.getCursor(); } return ids; } }
private List<? extends IdRef<?>> sourceIds() { QueryBuilder<?> q = r.query(sourceClazz).order("id").limit(BATCH_SIZE); if (cursor != null) { q.cursor(cursor); } List<? extends IdRef<?>> ids = q.ids(); if (ids.size() < BATCH_SIZE) { cursor = null; } else { cursor = q.getCursor(); } return ids; } }
@Override public Object action() { QueryBuilder<?> query = query(); if (id != null) { query.from(id); } boolean returnCursor = false; if (params.containsKey(QUERY_OPTIONS)) { QueryOptions options = QueryOptions.parse(params.get(QUERY_OPTIONS)); query.options(options); returnCursor = options.returnCursor(); } if (hasShieldCondition()) { query.and(shield.getWhere()); } List<?> objects = list(query); if (returnCursor) { Map<String, Object> result = new HashMap<>(); result.put("results", objects); result.put("cursor", query.getCursor()); return result; } return objects; }
private List<? extends IdRef<?>> sinkMarkerIds() { QueryBuilder<?> q = r.query(SinkMarker.class).from(sinkId).order("id").limit(BATCH_SIZE); if (cursor != null) { q.cursor(cursor); } List<? extends IdRef<?>> ids = q.ids(); if (ids.size() < BATCH_SIZE) { cursor = null; } else { cursor = q.getCursor(); } return ids; } }
@SuppressWarnings("unchecked") private <T> List<T> applyCursor(QueryBuilder<?> builder, List<Object> objects) { if (builder.getCursor() == null) { return (List<T>) objects; } List<T> result = new ArrayList<T>(); IdRef<?> cursorId = MockStore.getCursor(builder.getCursor()); boolean startAdd = false; for (Object object : objects) { if (startAdd) { result.add((T) object); continue; } ObjectHolder objectHolder = new ObjectHolder(object); if (cursorId.equals(objectHolder.getId())) { startAdd = true; } } return result; }
@Test public void testCursor() { saveManyBasicObjects(3); QueryBuilder<BasicObject> q = yawp(BasicObject.class).order("intValue", "desc").limit(1); List<BasicObject> objects1 = q.list(); assertEquals(3, objects1.get(0).getIntValue()); List<BasicObject> objects2 = q.list(); assertEquals(2, objects2.get(0).getIntValue()); List<BasicObject> objects3 = yawp(BasicObject.class).cursor(q.getCursor()).order("intValue", "desc").limit(1).list(); assertEquals(1, objects3.get(0).getIntValue()); }