private static <S> List<S> filterMatchingRange(List<S> source, @Nullable SpelCriteria criteria, long offset, int rows) { Stream<S> stream = source.stream(); if (criteria != null) { stream = stream.filter(it -> evaluateExpression(criteria, it)); } if (offset > 0) { stream = stream.skip(offset); } if (rows > 0) { stream = stream.limit(rows); } return stream.collect(Collectors.toList()); }
@SuppressWarnings("unchecked") private List<?> sortAndFilterMatchingRange(Iterable<?> source, @Nullable SpelCriteria criteria, @Nullable Comparator sort, long offset, int rows) { List<?> tmp = IterableConverter.toList(source); if (sort != null) { tmp.sort(sort); } return filterMatchingRange(tmp, criteria, offset, rows); }
@Override public Collection<?> execute(@Nullable SpelCriteria criteria, @Nullable Comparator<?> sort, long offset, int rows, String keyspace) { return sortAndFilterMatchingRange(getRequiredAdapter().getAllOf(keyspace), criteria, sort, offset, rows); }
@Override public long count(@Nullable SpelCriteria criteria, String keyspace) { return filterMatchingRange(IterableConverter.toList(getRequiredAdapter().getAllOf(keyspace)), criteria, -1, -1) .size(); }
/** * Creates new {@link AbstractKeyValueAdapter} with using the default query engine. * * @param engine will be defaulted to {@link SpelQueryEngine} if {@literal null}. */ protected AbstractKeyValueAdapter(@Nullable QueryEngine<? extends KeyValueAdapter, ?, ?> engine) { this.engine = engine != null ? engine : new SpelQueryEngine(); this.engine.registerAdapter(this); }
@Override public long count(@Nullable SpelCriteria criteria, String keyspace) { return filterMatchingRange(IterableConverter.toList(getRequiredAdapter().getAllOf(keyspace)), criteria, -1, -1) .size(); }
/** * Creates new {@link AbstractKeyValueAdapter} with using the default query engine. * * @param engine will be defaulted to {@link SpelQueryEngine} if {@literal null}. */ protected AbstractKeyValueAdapter(@Nullable QueryEngine<? extends KeyValueAdapter, ?, ?> engine) { this.engine = engine != null ? engine : new SpelQueryEngine(); this.engine.registerAdapter(this); }
@Override public long count(@Nullable SpelCriteria criteria, String keyspace) { return filterMatchingRange(IterableConverter.toList(getRequiredAdapter().getAllOf(keyspace)), criteria, -1, -1) .size(); }
@Override public Collection<?> execute(@Nullable SpelCriteria criteria, @Nullable Comparator<?> sort, long offset, int rows, String keyspace) { return sortAndFilterMatchingRange(getRequiredAdapter().getAllOf(keyspace), criteria, sort, offset, rows); }
@SuppressWarnings("unchecked") private List<?> sortAndFilterMatchingRange(Iterable<?> source, @Nullable SpelCriteria criteria, @Nullable Comparator sort, long offset, int rows) { List<?> tmp = IterableConverter.toList(source); if (sort != null) { tmp.sort(sort); } return filterMatchingRange(tmp, criteria, offset, rows); }
/** * Creates new {@link AbstractKeyValueAdapter} with using the default query engine. * * @param engine will be defaulted to {@link SpelQueryEngine} if {@literal null}. */ protected AbstractKeyValueAdapter(@Nullable QueryEngine<? extends KeyValueAdapter, ?, ?> engine) { this.engine = engine != null ? engine : new SpelQueryEngine(); this.engine.registerAdapter(this); }
private static <S> List<S> filterMatchingRange(List<S> source, @Nullable SpelCriteria criteria, long offset, int rows) { Stream<S> stream = source.stream(); if (criteria != null) { stream = stream.filter(it -> evaluateExpression(criteria, it)); } if (offset > 0) { stream = stream.skip(offset); } if (rows > 0) { stream = stream.limit(rows); } return stream.collect(Collectors.toList()); }
@Override public Collection<?> execute(@Nullable SpelCriteria criteria, @Nullable Comparator<?> sort, long offset, int rows, String keyspace) { return sortAndFilterMatchingRange(getRequiredAdapter().getAllOf(keyspace), criteria, sort, offset, rows); }
@SuppressWarnings("unchecked") private List<?> sortAndFilterMatchingRange(Iterable<?> source, @Nullable SpelCriteria criteria, @Nullable Comparator sort, long offset, int rows) { List<?> tmp = IterableConverter.toList(source); if (sort != null) { tmp.sort(sort); } return filterMatchingRange(tmp, criteria, offset, rows); }
private static <S> List<S> filterMatchingRange(List<S> source, @Nullable SpelCriteria criteria, long offset, int rows) { Stream<S> stream = source.stream(); if (criteria != null) { stream = stream.filter(it -> evaluateExpression(criteria, it)); } if (offset > 0) { stream = stream.skip(offset); } if (rows > 0) { stream = stream.limit(rows); } return stream.collect(Collectors.toList()); }