Guest User

Untitled

a guest
Nov 22nd, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. import java.util.function.Predicate;
  2. import java.util.function.Supplier;
  3. import java.util.stream.Stream;
  4.  
  5. import com.vaadin.data.provider.AbstractBackEndDataProvider;
  6. import com.vaadin.data.provider.Query;
  7.  
  8. public class StreamDataProvider<T> extends AbstractBackEndDataProvider<T, Predicate<T>> {
  9.  
  10. private final Supplier<Stream<T>> streamSupplier;
  11.  
  12. public StreamDataProvider(Supplier<Stream<T>> streamSupplier) {
  13. this.streamSupplier = streamSupplier;
  14. }
  15.  
  16. @Override
  17. protected Stream<T> fetchFromBackEnd(Query<T, Predicate<T>> query) {
  18. Stream<T> stream = this.streamSupplier.get();
  19. if (query.getFilter().isPresent()) {
  20. stream = stream.filter(query.getFilter().get());
  21. }
  22. return stream.skip(query.getOffset()).limit(query.getLimit());
  23. }
  24.  
  25. @Override
  26. protected int sizeInBackEnd(Query<T, Predicate<T>> query) {
  27. Stream<T> stream = this.streamSupplier.get();
  28. if (query.getFilter().isPresent()) {
  29. stream = stream.filter(query.getFilter().get());
  30. }
  31. long count = stream.skip(query.getOffset()).limit(query.getLimit()).count();
  32. return Math.toIntExact(count);
  33. }
  34.  
  35. }
Add Comment
Please, Sign In to add comment