Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. private HashSet<T> convert(ResultSet rs, Integer page) throws ExecutionException, InterruptedException {
  2. CassandraConverter converter = cassandra.getConverter();
  3. HashSet<T> elements = new LinkedHashSet<>();
  4.  
  5. if(rs == null) {
  6. return elements;
  7. }
  8.  
  9. // How far we can go without triggering the blocking fetch:
  10. int remainingInPage = rs.getAvailableWithoutFetching();
  11. LOG.info("Remaining rows in page: {}", remainingInPage);
  12.  
  13. // fetch rows of the page
  14. for (Row row : rs) {
  15. T element = converter.read(getGenericTypeClass(), row);
  16. elements.add(element);
  17.  
  18. if (--remainingInPage == 0) {
  19. break;
  20. }
  21. }
  22.  
  23. boolean wasLastPage = rs.getExecutionInfo().getPagingState() == null;
  24. if(!wasLastPage) {
  25. ListenableFuture<ResultSet> nextResult = rs.fetchMoreResults();
  26. HashSet<T> nextPage = convert(nextResult.get(), page + 1);
  27. elements.addAll(nextPage);
  28. }
  29.  
  30. return elements;
  31. }
  32.  
  33. protected ArrayList<T> fetchMerged(final List<Statement> statements) {
  34. HashSet<T> elements = new LinkedHashSet<>();
  35.  
  36. List<ResultSetFuture> futures = new ArrayList<>();
  37. for(Statement statement : statements) {
  38. statement.setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM);
  39. futures.add(session.executeAsync(statement));
  40. }
  41.  
  42. Future<List<ResultSet>> listListenableFuture = Futures.successfulAsList(futures);
  43. try {
  44. for(ResultSet rs : listListenableFuture.get()) {
  45. HashSet<T> convert = convert(rs, 0);
  46. elements.addAll(convert);
  47. }
  48. } catch (InterruptedException | ExecutionException e) {
  49. LOG.error("Failed to fetch data", e);
  50. Thread.currentThread().interrupt();
  51. }
  52.  
  53. return new ArrayList<>(elements);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement