use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class ViewMigration method createMigrationOps.
public static List<Operation> createMigrationOps(final boolean aggregateAfter, final Iterable<ViewMigration> views) {
final ViewMigration viewMig = new ViewMigration(aggregateAfter);
for (final ViewMigration view : views) {
viewMig.edgesPostAggregationFilter.putAll(view.edgesPostAggregationFilter);
viewMig.entitiesPostAggregationFilter.putAll(view.entitiesPostAggregationFilter);
viewMig.edgesPostTransformFilter.putAll(view.edgesPostTransformFilter);
viewMig.entitiesPostTransformFilter.putAll(view.entitiesPostTransformFilter);
viewMig.edgesTransformer.putAll(view.edgesTransformer);
viewMig.entitiesTransformer.putAll(view.entitiesTransformer);
}
final List<Operation> updatedOps = new ArrayList<>();
if (aggregateAfter) {
final Aggregate aggregate = new Aggregate();
updatedOps.add(aggregate);
if (!viewMig.entitiesPostAggregationFilter.isEmpty() || !viewMig.edgesPostAggregationFilter.isEmpty()) {
final Filter postAggregationFilter = new Filter.Builder().entities(viewMig.entitiesPostAggregationFilter).edges(viewMig.edgesPostAggregationFilter).build();
updatedOps.add(postAggregationFilter);
}
if (!viewMig.entitiesTransformer.isEmpty() || !viewMig.edgesTransformer.isEmpty()) {
final Transform transformFunction = new Transform.Builder().entities(viewMig.entitiesTransformer).edges(viewMig.edgesTransformer).build();
updatedOps.add(transformFunction);
}
if (!viewMig.edgesPostTransformFilter.isEmpty() || !viewMig.entitiesPostTransformFilter.isEmpty()) {
final Filter postTransformFilter = new Filter.Builder().entities(viewMig.entitiesPostTransformFilter).edges(viewMig.edgesPostTransformFilter).build();
updatedOps.add(postTransformFilter);
}
}
return updatedOps;
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldFailValidationWhenTypeArgumentOfPredicateIsIncorrect.
@Test
public void shouldFailValidationWhenTypeArgumentOfPredicateIsIncorrect() {
// Given
final Schema schema = new Schema.Builder().edge(TestGroups.EDGE, new SchemaEdgeDefinition.Builder().source("junctionA").destination("junctionB").property(TestPropertyNames.COUNT, "count.long").build()).edge(TestGroups.EDGE, new SchemaEdgeDefinition.Builder().source("junctionA").destination("junctionB").property(TestPropertyNames.COUNT, "count.long").build()).type("count.long", new TypeDefinition(Long.class)).build();
given(store.getSchema()).willReturn(schema);
final Edge edge = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").property(TestPropertyNames.COUNT, 2L).build();
final Edge edge1 = new Edge.Builder().group(TestGroups.EDGE).source("junctionA").dest("junctionB").property(TestPropertyNames.COUNT, 1L).build();
input.add(edge);
input.add(edge1);
final Filter filter = new Filter.Builder().input(input).globalEdges(new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(new IsMoreThan("abcd")).build()).build();
assertThatExceptionOfType(OperationException.class).isThrownBy(() -> handler.doOperation(filter, context, store)).withMessageContaining("is not compatible with the input type:");
}
use of uk.gov.gchq.gaffer.operation.impl.function.Filter in project Gaffer by gchq.
the class FilterHandlerTest method shouldFilterByGroup.
@Test
public void shouldFilterByGroup() 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 Edge edge3 = new Edge.Builder().group(TestGroups.EDGE_3).source("junctionC").dest("junctionB").directed(true).property(TestPropertyNames.COUNT, 3L).build();
input.add(edge);
input.add(edge1);
input.add(edge2);
input.add(edge3);
expected.add(edge1);
final Filter filter = new Filter.Builder().input(input).edge(TestGroups.EDGE_2).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 shouldReturnNoResultsWhenGlobalElementsFails.
@Test
public void shouldReturnNoResultsWhenGlobalElementsFails() 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();
input.add(edge);
input.add(edge1);
input.add(edge2);
input.add(entity);
input.add(entity1);
input.add(entity2);
final Filter filter = new Filter.Builder().input(input).globalElements(new ElementFilter.Builder().select(TestPropertyNames.COUNT).execute(new IsMoreThan(10L)).build()).globalEdges(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 shouldFailValidationWhenSchemaElementDefinitionsAreNull.
@Test
public void shouldFailValidationWhenSchemaElementDefinitionsAreNull() {
// Given
given(store.getSchema()).willReturn(new 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).build();
// When / Then
assertThatExceptionOfType(OperationException.class).isThrownBy(() -> handler.doOperation(filter, context, store)).withMessageContaining("Edge group: " + TestGroups.EDGE + " does not exist in the schema");
}
Aggregations