use of uk.gov.gchq.gaffer.commonutil.iterable.EmptyClosableIterable in project Gaffer by gchq.
the class GetWalksHandler method doOperation.
@Override
public Iterable<Walk> doOperation(final GetWalks getWalks, final Context context, final Store store) throws OperationException {
// Check input
if (null == getWalks.getInput()) {
return null;
}
// Check there are some operations
if (null == getWalks.getOperations()) {
return new EmptyClosableIterable<>();
}
final Integer resultLimit = getWalks.getResultsLimit();
final int hops = getWalks.getNumberOfGetEdgeOperations();
final LimitedCloseableIterable limitedInputItr = new LimitedCloseableIterable<>(getWalks.getInput(), 0, resultLimit, false);
final List<EntityId> originalInput = Lists.newArrayList(limitedInputItr);
// Check hops and maxHops (if set)
if (hops == 0) {
return new EmptyClosableIterable<>();
} else if (maxHops != null && hops > maxHops) {
throw new OperationException("GetWalks operation contains " + hops + " hops. The maximum number of hops is: " + maxHops);
}
final AdjacencyMaps adjacencyMaps = prune && !getWalks.isIncludePartial() ? new PrunedAdjacencyMaps() : new SimpleAdjacencyMaps();
final EntityMaps entityMaps = new SimpleEntityMaps();
List<?> seeds = originalInput;
// Execute the operations
for (final OperationChain<Iterable<Element>> operation : getWalks.getOperations()) {
if (isWhileOperation(operation)) {
seeds = executeWhileOperation(operation, seeds, resultLimit, context, store, hops, adjacencyMaps, entityMaps);
} else {
seeds = executeOperation(operation, seeds, resultLimit, context, store, hops, adjacencyMaps, entityMaps);
}
}
// requested by the user.
if (entityMaps.size() == adjacencyMaps.size()) {
entityMaps.add(new EntityMap());
}
final GraphWindow graphWindow = new GraphWindow(adjacencyMaps, entityMaps);
// Track/recombine the edge objects and convert to return type
final Stream<Walk> walks = Streams.toStream(originalInput).flatMap(seed -> walk(seed.getVertex(), null, graphWindow, new LinkedList<>(), new LinkedList<>(), hops, getWalks.isIncludePartial()).stream());
return applyConditionalFiltering(walks, getWalks, context, store);
}
use of uk.gov.gchq.gaffer.commonutil.iterable.EmptyClosableIterable in project Gaffer by gchq.
the class GetElementsHandlerTest method testGetElementsWhenNoEdgeIdsProvided.
@Test
public void testGetElementsWhenNoEdgeIdsProvided() throws OperationException {
// Given
final Graph graph = GetAllElementsHandlerTest.getGraph();
final AddElements addElements = new AddElements.Builder().input(getElements()).build();
graph.execute(addElements, new User());
// When
final GetElements getElements = new GetElements.Builder().input(new EmptyClosableIterable<>()).build();
final CloseableIterable<? extends Element> results = graph.execute(getElements, new User());
// Then
final Set<Element> resultsSet = new HashSet<>();
Streams.toStream(results).forEach(resultsSet::add);
assertEquals(Collections.emptySet(), resultsSet);
}
use of uk.gov.gchq.gaffer.commonutil.iterable.EmptyClosableIterable in project Gaffer by gchq.
the class AbstractLoaderIT method shouldReturnEmptyIteratorIfNoSeedsProvidedForGetElements.
@Test
public void shouldReturnEmptyIteratorIfNoSeedsProvidedForGetElements() throws Exception {
// Then
final GetElements op = new GetElements.Builder().input(new EmptyClosableIterable<>()).build();
final CloseableIterable<? extends Element> results = graph.execute(op, getUser());
assertThat(results.iterator().hasNext()).isFalse();
}
use of uk.gov.gchq.gaffer.commonutil.iterable.EmptyClosableIterable in project Gaffer by gchq.
the class GetElementsIT method shouldReturnEmptyIteratorIfNoSeedsProvidedForGetElementsBySeed.
@Test
public void shouldReturnEmptyIteratorIfNoSeedsProvidedForGetElementsBySeed() throws Exception {
// Given
final GetElements op = new GetElements.Builder().input(new EmptyClosableIterable<>()).build();
// When
final CloseableIterable<? extends Element> results = graph.execute(op, getUser());
// Then
assertThat(results.iterator().hasNext()).isFalse();
}
use of uk.gov.gchq.gaffer.commonutil.iterable.EmptyClosableIterable in project Gaffer by gchq.
the class GetElementsIT method shouldReturnEmptyIteratorIfNoSeedsProvidedForGetRelatedElements.
@Test
public void shouldReturnEmptyIteratorIfNoSeedsProvidedForGetRelatedElements() throws Exception {
// Given
final GetElements op = new GetElements.Builder().input(new EmptyClosableIterable<>()).build();
// When
final CloseableIterable<? extends Element> results = graph.execute(op, getUser());
// Then
assertThat(results.iterator().hasNext()).isFalse();
}
Aggregations