use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldThrowErrorForNullInput.
@Test
public void shouldThrowErrorForNullInput() {
// Given
given(store.getSchema()).willReturn(SCHEMA);
final Filter filter = new Filter.Builder().globalElements(new ElementFilter()).build();
// When / Then
try {
handler.doOperation(filter, context, store);
fail("Exception expected");
} catch (OperationException e) {
assertEquals("Filter operation has null iterable of elements", e.getMessage());
}
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldFilterEntitiesAndEdges.
@Test
public void shouldFilterEntitiesAndEdges() throws OperationException {
// Given
given(store.getSchema()).willReturn(SCHEMA);
final Edge edge = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 2L).build();
final Edge edge1 = new Edge.Builder().group(TestGroups.EDGE_2).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 1L).build();
final Edge edge2 = new Edge.Builder().group(TestGroups.EDGE).source("junctionB").dest("junctionA").directed(true).property(TestPropertyNames.COUNT, 4L).build();
final Entity entity = new Entity.Builder().group(TestGroups.ENTITY).property(TestPropertyNames.COUNT, 3L).build();
final Entity entity1 = new Entity.Builder().group(TestGroups.ENTITY_2).property(TestPropertyNames.COUNT, 4L).build();
input.add(edge);
input.add(edge1);
input.add(edge2);
input.add(entity);
input.add(entity1);
expected.add(edge2);
expected.add(entity);
expected.add(entity1);
final Filter filter = new Filter.Builder().input(input).globalElements(new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(new IsMoreThan(2L)).build()).build();
// When
final Iterable<? extends Element> results = handler.doOperation(filter, context, store);
// Then
final List<Element> resultsList = Lists.newArrayList(results);
assertEquals(expected, resultsList);
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldFailValidationWhenElementFilterOperationIsNull.
@Test
public void shouldFailValidationWhenElementFilterOperationIsNull() {
// Given
given(store.getSchema()).willReturn(SCHEMA);
final Edge edge = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 2L).build();
final Edge edge1 = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 1L).build();
input.add(edge);
input.add(edge1);
final Filter filter = new Filter.Builder().input(input).edge(TestGroups.EDGE, new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(null).build()).build();
assertThatExceptionOfType(OperationException.class).isThrownBy(() -> handler.doOperation(filter, context, store)).withMessageContaining(filter.getClass().getSimpleName() + " contains a null function.");
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldHandleComplexFiltering.
@Test
public void shouldHandleComplexFiltering() throws OperationException {
// Given
given(store.getSchema()).willReturn(SCHEMA);
final Edge edge = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 2L).build();
final Edge edge1 = new Edge.Builder().group(TestGroups.EDGE_2).source("junctionA").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 1L).build();
final Edge edge2 = new Edge.Builder().group(TestGroups.EDGE).source("junctionB").dest("junctionA").directed(true).property(TestPropertyNames.COUNT, 4L).build();
final Entity entity = new Entity.Builder().group(TestGroups.ENTITY).property(TestPropertyNames.COUNT, 3L).build();
final Entity entity1 = new Entity.Builder().group(TestGroups.ENTITY_2).property(TestPropertyNames.COUNT, 4L).build();
final Entity entity2 = new Entity.Builder().group(TestGroups.ENTITY_3).property(TestPropertyNames.COUNT, 6L).build();
final Filter filter = new Filter.Builder().input(input).globalElements(new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(new IsMoreThan(1L)).build()).edge(TestGroups.EDGE, new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(new IsMoreThan(2L)).build()).entity(TestGroups.ENTITY_2).build();
input.add(edge);
input.add(edge1);
input.add(edge2);
input.add(entity);
input.add(entity1);
input.add(entity2);
expected.add(edge2);
expected.add(entity1);
// When
final Iterable<? extends Element> results = handler.doOperation(filter, context, store);
// Then
final List<Element> resultsList = Lists.newArrayList(results);
assertEquals(expected, resultsList);
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FederatedStore method addAdditionalOperationHandlers.
@Override
protected void addAdditionalOperationHandlers() {
// Override the Operations that don't have an output
getSupportedOperations().stream().filter(op -> !Output.class.isAssignableFrom(op) && !AddElements.class.equals(op) && !AddNamedOperation.class.equals(op) && !AddNamedView.class.equals(op)).forEach(op -> addOperationHandler(op, new FederatedOperationHandler()));
addOperationHandler(GetSchema.class, new FederatedGetSchemaHandler());
addOperationHandler(Filter.class, new FederatedFilterHandler());
addOperationHandler(Aggregate.class, new FederatedAggregateHandler());
addOperationHandler(Transform.class, new FederatedTransformHandler());
addOperationHandler(Validate.class, new FederatedValidateHandler());
addOperationHandler(GetAllGraphIds.class, new FederatedGetAllGraphIDHandler());
addOperationHandler(AddGraph.class, new FederatedAddGraphHandler());
addOperationHandler(AddGraphWithHooks.class, new FederatedAddGraphWithHooksHandler());
addOperationHandler(RemoveGraph.class, new FederatedRemoveGraphHandler());
addOperationHandler(FederatedOperationChain.class, new FederatedOperationChainHandler());
addOperationHandler(GetTraits.class, new FederatedGetTraitsHandler());
addOperationHandler(GetAllGraphInfo.class, new FederatedGetAllGraphInfoHandler());
addOperationHandler(ChangeGraphAccess.class, new FederatedChangeGraphAccessHandler());
addOperationHandler(ChangeGraphId.class, new FederatedChangeGraphIdHandler());
}
Aggregations