/** * Applies the filter to the provided list. * * @param result The result to filter. * @return all entries with ids that start with specified prefix */ @Override public ListResult<T> apply(ListResult<T> result) { List<T> list = result.getItems().stream() .filter(x -> x.getId().filter(y->y.startsWith(prefix)).isPresent() ) .collect(Collectors.toList()); return new ListResult.Builder<T>().createFrom(result).items(list).build(); }
@Override public ListResult<T> apply(ListResult<T> result) { List<T> list = result.getItems().stream().filter(filter).collect(Collectors.toList()); return new ListResult.Builder<T>().createFrom(result).items(list).totalCount(list.size()).build(); }
/** * Applies the filter to the provided list. * * @param result The result to filter. * @return The relevant page of the provided list. Returns an empty list if the requested page would be outside of the provided list range. */ @Override public ListResult<T> apply(ListResult<T> result) { List<T> list = result.getItems(); if (startIndex >= list.size()) { list = Collections.emptyList(); } else { list = list.subList(startIndex, Math.min(list.size(), endIndex)); } return new ListResult.Builder<T>().createFrom(result).items(list).build(); }
@Test public void getConnectorsWithFilterFunction() { @SuppressWarnings("unchecked") ListResult<Connector> connectors = dataManager.fetchAll( Connector.class, resultList -> new ListResult.Builder<Connector>() .createFrom(resultList) .items(resultList.getItems().stream() .filter(connector -> connector.getId().get().equals("twitter") || connector.getId().get().equals("activemq")) .collect(Collectors.toList())) .build() ); assertThat(connectors.getItems().stream().map(Connector::getId).map(Optional::get)).containsExactlyInAnyOrder("twitter", "activemq"); Assert.assertEquals(9, connectors.getTotalCount()); Assert.assertEquals(2, connectors.getItems().size()); }
@Override public ListResult<T> apply(ListResult<T> result) { List<T> list = new ArrayList<>(result.getItems()); if (delegate != null) { // We are sorting inline when a delegate is given. Otherwise its a no-op list.sort(this); } return new ListResult.Builder<T>().createFrom(result).items(list).build(); }