summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado/qe/StandardQuery.java
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2008-04-14 03:18:32 +0000
committerBrian S. O'Neill <bronee@gmail.com>2008-04-14 03:18:32 +0000
commit63ff050e4d48f8b997905e9e0a11d944ea6038a6 (patch)
tree64bcea8ed7fcbb56cc6cdd438bfff79a5615f203 /src/main/java/com/amazon/carbonado/qe/StandardQuery.java
parentf6cce60bed5b4d49831058f24c9f46de7a2b0265 (diff)
Support query fetch limits.
Diffstat (limited to 'src/main/java/com/amazon/carbonado/qe/StandardQuery.java')
-rw-r--r--src/main/java/com/amazon/carbonado/qe/StandardQuery.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java
index 5596c32..10fdf43 100644
--- a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java
+++ b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java
@@ -217,6 +217,18 @@ public abstract class StandardQuery<S extends Storable> extends AbstractQuery<S>
}
}
+ public Cursor<S> fetch(long from, Long to) throws FetchException {
+ if (!checkSliceArguments(from, to)) {
+ return fetch();
+ }
+ try {
+ QueryHints hints = QueryHints.emptyHints().with(QueryHint.CONSUME_SLICE);
+ return executorFactory().executor(mFilter, mOrdering, hints).fetch(mValues, from, to);
+ } catch (RepositoryException e) {
+ throw e.toFetchException();
+ }
+ }
+
public Cursor<S> fetchAfter(S start) throws FetchException {
OrderingList<S> orderings;
if (start == null || (orderings = mOrdering).size() == 0) {
@@ -225,6 +237,17 @@ public abstract class StandardQuery<S extends Storable> extends AbstractQuery<S>
return buildAfter(start, orderings).fetch();
}
+ public Cursor<S> fetchAfter(S start, long from, Long to) throws FetchException {
+ if (!checkSliceArguments(from, to)) {
+ return fetchAfter(start);
+ }
+ OrderingList<S> orderings;
+ if (start == null || (orderings = mOrdering).size() == 0) {
+ return fetch(from, to);
+ }
+ return buildAfter(start, orderings).fetch(from, to);
+ }
+
private Query<S> buildAfter(S start, OrderingList<S> orderings) throws FetchException {
Class<S> storableType = getStorableType();
Filter<S> orderFilter = Filter.getClosedFilter(storableType);