Search in sources :

Example 1 with Or

use of org.apache.spark.sql.sources.Or in project Gaffer by gchq.

the class FiltersToOperationConverter method checkForGroups.

/**
     * Returns the set of all groups in the filter, if the filter specifies that the group must be equal to a certain
     * value.
     *
     * @param filter The {@link Filter} that will be checked for groups.
     * @return A set of strings containing the required groups, <code>null</code> if no groups are specified in the
     * filter.
     */
private Set<String> checkForGroups(final Filter filter) {
    if (filter instanceof EqualTo) {
        final EqualTo equalTo = (EqualTo) filter;
        if (equalTo.attribute().equals(SchemaToStructTypeConverter.GROUP)) {
            LOGGER.info("Filter {} specifies that {} should be {}", filter, SchemaToStructTypeConverter.GROUP, equalTo.value());
            return Collections.singleton((String) equalTo.value());
        }
    } else if (filter instanceof Or) {
        final Or or = (Or) filter;
        if (or.left() instanceof EqualTo && or.right() instanceof EqualTo && ((EqualTo) or.left()).attribute().equals(SchemaToStructTypeConverter.GROUP) && ((EqualTo) or.right()).attribute().equals(SchemaToStructTypeConverter.GROUP)) {
            final Set<String> groups = new HashSet<>();
            groups.add((String) ((EqualTo) or.left()).value());
            groups.add((String) ((EqualTo) or.right()).value());
            LOGGER.info("Filter {} specifies that {} should be {} or {}", filter, SchemaToStructTypeConverter.GROUP, ((EqualTo) or.left()).value(), ((EqualTo) or.right()).value());
            return groups;
        }
    } else if (filter instanceof In) {
        final In in = (In) filter;
        if (in.attribute().equals(SchemaToStructTypeConverter.GROUP)) {
            final Set<String> groups = new HashSet<>();
            for (final Object o : in.values()) {
                groups.add((String) o);
            }
            LOGGER.info("Filter {} specifies that {} should be in {}", filter, SchemaToStructTypeConverter.GROUP, StringUtils.join(in.values(), ','));
            return groups;
        }
    }
    return null;
}
Also used : Or(org.apache.spark.sql.sources.Or) HashSet(java.util.HashSet) Set(java.util.Set) IsIn(uk.gov.gchq.gaffer.function.filter.IsIn) In(org.apache.spark.sql.sources.In) EqualTo(org.apache.spark.sql.sources.EqualTo) HashSet(java.util.HashSet)

Example 2 with Or

use of org.apache.spark.sql.sources.Or in project Gaffer by gchq.

the class FilterToOperationConverterTest method testTwoGroups.

@Test
public void testTwoGroups() throws OperationException {
    final Schema schema = getSchema();
    final SQLContext sqlContext = getSqlContext("testTwoGroups");
    final Filter[] filters = new Filter[1];
    final Filter left = new EqualTo(SchemaToStructTypeConverter.GROUP, ENTITY_GROUP);
    final Filter right = new EqualTo(SchemaToStructTypeConverter.GROUP, EDGE_GROUP2);
    filters[0] = new Or(left, right);
    final FiltersToOperationConverter converter = new FiltersToOperationConverter(sqlContext, getViewFromSchema(schema), schema, filters);
    final AbstractGetRDD<?> operation = converter.getOperation();
    assertTrue(operation instanceof GetRDDOfAllElements);
    assertEquals(Collections.singleton(ENTITY_GROUP), operation.getView().getEntityGroups());
    assertEquals(Collections.singleton(EDGE_GROUP2), operation.getView().getEdgeGroups());
    sqlContext.sparkContext().stop();
}
Also used : Or(org.apache.spark.sql.sources.Or) Filter(org.apache.spark.sql.sources.Filter) GetRDDOfAllElements(uk.gov.gchq.gaffer.spark.operation.scalardd.GetRDDOfAllElements) Schema(uk.gov.gchq.gaffer.store.schema.Schema) SQLContext(org.apache.spark.sql.SQLContext) EqualTo(org.apache.spark.sql.sources.EqualTo) Test(org.junit.Test)

Aggregations

EqualTo (org.apache.spark.sql.sources.EqualTo)2 Or (org.apache.spark.sql.sources.Or)2 HashSet (java.util.HashSet)1 Set (java.util.Set)1 SQLContext (org.apache.spark.sql.SQLContext)1 Filter (org.apache.spark.sql.sources.Filter)1 In (org.apache.spark.sql.sources.In)1 Test (org.junit.Test)1 IsIn (uk.gov.gchq.gaffer.function.filter.IsIn)1 GetRDDOfAllElements (uk.gov.gchq.gaffer.spark.operation.scalardd.GetRDDOfAllElements)1 Schema (uk.gov.gchq.gaffer.store.schema.Schema)1