Search in sources :

Example 6 with LogicFilterImpl

use of org.geotools.filter.LogicFilterImpl in project sldeditor by robward-scisys.

the class FilterNode method setFilter.

/**
 * Sets the filter.
 *
 * @param filter the new expression
 * @param filterConfig the filter config
 */
public void setFilter(Filter filter, FilterConfigInterface filterConfig) {
    this.filter = filter;
    this.filterConfig = filterConfig;
    setDisplayString();
    this.removeAllChildren();
    TypeManager.getInstance().reset();
    if (filterConfig != null) {
        FilterName filterName = filterConfig.getFilterConfiguration();
        if (filter instanceof Not) {
            List<Filter> childFilterList = ((LogicFilterImpl) filter).getChildren();
            if (childFilterList.isEmpty()) {
                // No child filter so add a minimum 1 to work with.
                setFilterParameter(null, filterName.getParameter(0));
            } else {
                setFilterParameter(childFilterList.get(0), filterName.getParameter(0));
            }
        } else if (filter instanceof LogicFilterImpl) {
            List<Filter> childFilterList = ((LogicFilterImpl) filter).getChildren();
            if (childFilterList.isEmpty()) {
                // No child filter so add a minimum 2 to work with.
                setFilterParameter(null, filterName.getParameter(0));
                setFilterParameter(null, filterName.getParameter(0));
            } else {
                for (Filter childFilter : childFilterList) {
                    setFilterParameter(childFilter, filterName.getParameter(0));
                }
            }
        } else if (filter instanceof BinaryTemporalOperator) {
            setExpressionParameter(((BinaryTemporalOperator) filter).getExpression1(), filterName.getParameter(0));
            setExpressionParameter(((BinaryTemporalOperator) filter).getExpression2(), filterName.getParameter(1));
        } else if (filter instanceof PropertyIsNull) {
            setExpressionParameter(((PropertyIsNull) filter).getExpression(), filterName.getParameter(0));
        } else if (filter instanceof PropertyIsBetween) {
            setExpressionParameter(((PropertyIsBetween) filter).getLowerBoundary(), filterName.getParameter(0));
            setExpressionParameter(((PropertyIsBetween) filter).getExpression(), filterName.getParameter(1));
            setExpressionParameter(((PropertyIsBetween) filter).getUpperBoundary(), filterName.getParameter(2));
        } else if (filter instanceof PropertyIsLike) {
            setExpressionParameter(((PropertyIsLike) filter).getExpression(), filterName.getParameter(0));
            setExpressionParameter(ff.literal(((PropertyIsLike) filter).getLiteral()), filterName.getParameter(1));
            setExpressionParameter(ff.literal(((PropertyIsLike) filter).getWildCard()), filterName.getParameter(2));
            setExpressionParameter(ff.literal(((PropertyIsLike) filter).getSingleChar()), filterName.getParameter(3));
            setExpressionParameter(ff.literal(((PropertyIsLike) filter).getEscape()), filterName.getParameter(4));
            setExpressionParameter(ff.literal(((PropertyIsLike) filter).isMatchingCase()), filterName.getParameter(5));
        } else if (filter instanceof BinarySpatialOperator) {
            setExpressionParameter(((BinaryComparisonAbstract) filter).getExpression1(), filterName.getParameter(0));
            setExpressionParameter(((BinaryComparisonAbstract) filter).getExpression2(), filterName.getParameter(1));
        } else if (filter instanceof BinaryComparisonAbstract) {
            setExpressionParameter(((BinaryComparisonAbstract) filter).getExpression1(), filterName.getParameter(0));
            setExpressionParameter(((BinaryComparisonAbstract) filter).getExpression2(), filterName.getParameter(1));
            // which has no matchCase parameter
            if (filterName.getParameterList().size() > 2) {
                setExpressionParameter(ff.literal(((BinaryComparisonAbstract) filter).isMatchingCase()), filterName.getParameter(2));
            }
        }
    }
}
Also used : Not(org.opengis.filter.Not) BinaryTemporalOperator(org.opengis.filter.temporal.BinaryTemporalOperator) PropertyIsLike(org.opengis.filter.PropertyIsLike) PropertyIsNull(org.opengis.filter.PropertyIsNull) Filter(org.opengis.filter.Filter) LogicFilterImpl(org.geotools.filter.LogicFilterImpl) List(java.util.List) PropertyIsBetween(org.opengis.filter.PropertyIsBetween) FilterName(com.sldeditor.filter.v2.function.FilterName) BinaryComparisonAbstract(org.geotools.filter.BinaryComparisonAbstract) BinarySpatialOperator(org.opengis.filter.spatial.BinarySpatialOperator)

Example 7 with LogicFilterImpl

use of org.geotools.filter.LogicFilterImpl in project sldeditor by robward-scisys.

the class ExtractAttributes method copy.

/**
 * (non-Javadoc)
 *
 * @see org.geotools.styling.visitor.DuplicatingStyleVisitor#copy(org.opengis.filter.Filter)
 */
protected Filter copy(Filter filter) {
    if (filter instanceof NotImpl) {
        copy(((NotImpl) filter).getFilter());
    } else if (filter instanceof LogicFilterImpl) {
        LogicFilterImpl logicFilter = (LogicFilterImpl) filter;
        for (Filter childFilter : logicFilter.getChildren()) {
            copy(childFilter);
        }
    } else if (filter instanceof MultiCompareFilterImpl) {
        MultiCompareFilterImpl multiCompareFilter = (MultiCompareFilterImpl) filter;
        List<String> foundList1 = new ArrayList<String>();
        Class<?> returnType1 = extractAttribute(String.class, multiCompareFilter.getExpression1(), foundList1);
        List<String> foundList2 = new ArrayList<String>();
        Class<?> returnType2 = extractAttribute(String.class, multiCompareFilter.getExpression2(), foundList2);
        determineTypeFromExpressions(foundList1, returnType1, foundList2, returnType2);
    } else if (filter instanceof BinaryTemporalOperator) {
        BinaryTemporalOperator binaryTemporalOperator = (BinaryTemporalOperator) filter;
        List<String> foundList1 = new ArrayList<String>();
        Class<?> returnType1 = extractAttribute(String.class, binaryTemporalOperator.getExpression1(), foundList1);
        List<String> foundList2 = new ArrayList<String>();
        Class<?> returnType2 = extractAttribute(String.class, binaryTemporalOperator.getExpression2(), foundList2);
        determineTypeFromExpressions(foundList1, returnType1, foundList2, returnType2);
    } else if (filter instanceof BinarySpatialOperator) {
        BinarySpatialOperator binarySpatialOperator = (BinarySpatialOperator) filter;
        List<String> foundList1 = new ArrayList<String>();
        Class<?> returnType1 = extractAttribute(String.class, binarySpatialOperator.getExpression1(), foundList1);
        List<String> foundList2 = new ArrayList<String>();
        Class<?> returnType2 = extractAttribute(String.class, binarySpatialOperator.getExpression2(), foundList2);
        determineTypeFromExpressions(foundList1, returnType1, foundList2, returnType2);
    } else if (filter instanceof PropertyIsBetween) {
        PropertyIsBetween isBetween = (PropertyIsBetween) filter;
        List<String> foundList1 = new ArrayList<String>();
        Class<?> returnType1 = extractAttribute(String.class, isBetween.getLowerBoundary(), foundList1);
        List<String> foundList2 = new ArrayList<String>();
        Class<?> returnType2 = extractAttribute(String.class, isBetween.getExpression(), foundList2);
        List<String> foundList3 = new ArrayList<String>();
        Class<?> returnType3 = extractAttribute(String.class, isBetween.getUpperBoundary(), foundList3);
        determineTypeFromExpressions(foundList1, returnType1, foundList2, returnType2, foundList3, returnType3);
    } else if (filter instanceof PropertyIsNull) {
        PropertyIsNull isNull = (PropertyIsNull) filter;
        List<String> foundList1 = new ArrayList<String>();
        extractAttribute(String.class, isNull.getExpression(), foundList1);
    } else if (filter instanceof PropertyIsLike) {
        PropertyIsLike isLike = (PropertyIsLike) filter;
        List<String> foundList1 = new ArrayList<String>();
        extractAttribute(String.class, isLike.getExpression(), foundList1);
    }
    return super.copy(filter);
}
Also used : PropertyIsLike(org.opengis.filter.PropertyIsLike) NotImpl(org.geotools.filter.NotImpl) ArrayList(java.util.ArrayList) LineString(com.vividsolutions.jts.geom.LineString) BinaryTemporalOperator(org.opengis.filter.temporal.BinaryTemporalOperator) PropertyIsNull(org.opengis.filter.PropertyIsNull) Filter(org.opengis.filter.Filter) MultiCompareFilterImpl(org.geotools.filter.MultiCompareFilterImpl) LogicFilterImpl(org.geotools.filter.LogicFilterImpl) ArrayList(java.util.ArrayList) List(java.util.List) PropertyIsBetween(org.opengis.filter.PropertyIsBetween) BinarySpatialOperator(org.opengis.filter.spatial.BinarySpatialOperator)

Example 8 with LogicFilterImpl

use of org.geotools.filter.LogicFilterImpl in project sldeditor by robward-scisys.

the class LogicTests method testClass.

/**
 * Test class.
 *
 * @param objUnderTest the obj under test
 * @param noOFExpectedFilters the no OF expected filters
 */
private void testClass(FilterConfigInterface objUnderTest, int noOFExpectedFilters) {
    assertNotNull(objUnderTest.getFilterConfiguration());
    assertNotNull(objUnderTest.createFilter());
    assertNull(objUnderTest.createFilter(null));
    LogicFilterImpl filter = (LogicFilterImpl) objUnderTest.createLogicFilter(null);
    assertEquals(0, filter.getChildren().size());
    List<Filter> filterList = new ArrayList<Filter>();
    try {
        filterList.add(CQL.toFilter("filter1 >= 5"));
    } catch (CQLException e) {
        e.printStackTrace();
        fail();
    }
    filter = (LogicFilterImpl) objUnderTest.createLogicFilter(filterList);
    if (noOFExpectedFilters > 1) {
        assertEquals(0, filter.getChildren().size());
        try {
            filterList.add(CQL.toFilter("filter2 >= 5"));
        } catch (CQLException e) {
            e.printStackTrace();
            fail();
        }
        filter = (LogicFilterImpl) objUnderTest.createLogicFilter(filterList);
    }
    assertEquals(noOFExpectedFilters, filter.getChildren().size());
    System.out.println(filter.toString());
}
Also used : Filter(org.opengis.filter.Filter) LogicFilterImpl(org.geotools.filter.LogicFilterImpl) ArrayList(java.util.ArrayList) CQLException(org.geotools.filter.text.cql2.CQLException)

Aggregations

LogicFilterImpl (org.geotools.filter.LogicFilterImpl)8 Filter (org.opengis.filter.Filter)6 ArrayList (java.util.ArrayList)4 PropertyIsBetween (org.opengis.filter.PropertyIsBetween)4 PropertyIsLike (org.opengis.filter.PropertyIsLike)4 PropertyIsNull (org.opengis.filter.PropertyIsNull)4 BinarySpatialOperator (org.opengis.filter.spatial.BinarySpatialOperator)4 BinaryTemporalOperator (org.opengis.filter.temporal.BinaryTemporalOperator)4 BinaryComparisonAbstract (org.geotools.filter.BinaryComparisonAbstract)3 Not (org.opengis.filter.Not)3 FilterNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.FilterNode)2 AbstractComparisonNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.AbstractComparisonNode)2 FilterConfigInterface (com.sldeditor.filter.v2.function.FilterConfigInterface)2 List (java.util.List)2 CompareFilterImpl (org.geotools.filter.CompareFilterImpl)2 FidFilterImpl (org.geotools.filter.FidFilterImpl)2 GeometryFilterImpl (org.geotools.filter.GeometryFilterImpl)2 PropertyIsGreaterThan (org.opengis.filter.PropertyIsGreaterThan)2 Expression (org.opengis.filter.expression.Expression)2 ModelMappingCondition (com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition)1