Search in sources :

Example 16 with BinaryLogicOpType

use of org.geotoolkit.ogc.xml.v110.BinaryLogicOpType in project ddf by codice.

the class TestWfsFilterDelegate method testLogicalCombinationOfLogicals.

private void testLogicalCombinationOfLogicals(String methName, String compOpName) throws Exception {
    String mockProperty = "myPropertyName";
    String mockType = "myType";
    WfsFilterDelegate delegate = mockFeatureMetacardCreateDelegate(mockProperty, mockType);
    FilterType compFilter1 = delegate.propertyIsLike(Metacard.ANY_TEXT, LITERAL, true);
    FilterType compFilter2 = delegate.propertyIsLike(Metacard.ANY_TEXT, LITERAL, true);
    List<FilterType> subFiltersToBeOred = new ArrayList<>();
    subFiltersToBeOred.add(compFilter1);
    subFiltersToBeOred.add(compFilter2);
    FilterType spatialFilter1 = delegate.dwithin(Metacard.ANY_GEO, "POINT (30 10)", Double.valueOf(1000));
    FilterType spatialFilter2 = delegate.dwithin(Metacard.ANY_GEO, "POINT (50 10)", Double.valueOf(1500));
    List<FilterType> subFiltersToBeAnded = new ArrayList<>();
    subFiltersToBeAnded.add(spatialFilter1);
    subFiltersToBeAnded.add(spatialFilter2);
    List<FilterType> filtersToCombine = new ArrayList<>();
    filtersToCombine.add(delegate.or(subFiltersToBeOred));
    filtersToCombine.add(delegate.and(subFiltersToBeAnded));
    Method method = WfsFilterDelegate.class.getMethod(methName, List.class);
    FilterType filter = (FilterType) method.invoke(delegate, filtersToCombine);
    //Verify
    assertThat(filter.getLogicOps().getName().toString(), is(compOpName));
    BinaryLogicOpType logicOpType = (BinaryLogicOpType) filter.getLogicOps().getValue();
    BinaryLogicOpType logicOrType = (BinaryLogicOpType) logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(0).getValue();
    assertThat(logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(0).getName().toString(), is(LOGICAL_OR_NAME));
    assertThat(logicOrType.getComparisonOpsOrSpatialOpsOrTemporalOps().size(), is(2));
    for (JAXBElement<?> jaxbElement : logicOrType.getComparisonOpsOrSpatialOpsOrTemporalOps()) {
        PropertyIsLikeType compOpsType = (PropertyIsLikeType) jaxbElement.getValue();
        String valRef = fetchPropertyIsLikeExpression(compOpsType, VALUE_REFERENCE);
        assertThat(valRef, is(mockProperty));
        String literal = fetchPropertyIsLikeExpression(compOpsType, LITERAL);
        assertThat(literal, is(LITERAL));
    }
    BinaryLogicOpType logicAndType = (BinaryLogicOpType) logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(1).getValue();
    assertThat(logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(1).getName().toString(), is(LOGICAL_AND_NAME));
    DistanceBufferType spatialOpsType1 = (DistanceBufferType) logicAndType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(0).getValue();
    assertThat(Double.toString(spatialOpsType1.getDistance().getValue()), is(Double.valueOf(1000).toString()));
    DistanceBufferType spatialOpsType2 = (DistanceBufferType) logicAndType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(1).getValue();
    assertThat(Double.toString(spatialOpsType2.getDistance().getValue()), is(Double.valueOf(1500).toString()));
}
Also used : FilterType(net.opengis.filter.v_2_0_0.FilterType) BinaryLogicOpType(net.opengis.filter.v_2_0_0.BinaryLogicOpType) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) DistanceBufferType(net.opengis.filter.v_2_0_0.DistanceBufferType) PropertyIsLikeType(net.opengis.filter.v_2_0_0.PropertyIsLikeType)

Example 17 with BinaryLogicOpType

use of org.geotoolkit.ogc.xml.v110.BinaryLogicOpType in project ddf by codice.

the class TestWfsFilterDelegate method testLogicalAndOfSpatialTemporal.

/**
     * Verifies that a temporal criteria can be AND'ed to other criteria.
     *
     * @throws Exception
     */
@Test
public void testLogicalAndOfSpatialTemporal() throws Exception {
    String mockProperty = "myPropertyName";
    String mockType = "myType";
    WfsFilterDelegate delegate = mockFeatureMetacardCreateDelegate(mockProperty, mockType);
    FilterType spatialFilter = delegate.dwithin(Metacard.ANY_GEO, "POINT (30 10)", Double.valueOf(1000));
    FilterType temporalFilter = delegate.during(mockProperty, new DateTime().minusDays(365).toDate(), new DateTime().minusDays(10).toDate());
    List<FilterType> filtersToBeAnded = new ArrayList<>(Arrays.asList(spatialFilter, temporalFilter));
    //Perform Test
    FilterType filter = delegate.and(filtersToBeAnded);
    //Verify AND op used
    if (filter.getLogicOps() == null) {
        fail("No AND/OR element found in the generated FilterType.");
    }
    assertEquals(LOGICAL_AND_NAME, filter.getLogicOps().getName().toString());
    BinaryLogicOpType logicOpType = (BinaryLogicOpType) filter.getLogicOps().getValue();
    //Verify two items were AND'ed
    assertEquals(2, logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().size());
    //Verify first is spatial, second is temporal
    assertTrue(logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(0).getValue() instanceof DistanceBufferType);
    assertTrue(logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().get(1).getValue() instanceof BinaryTemporalOpType);
}
Also used : FilterType(net.opengis.filter.v_2_0_0.FilterType) BinaryLogicOpType(net.opengis.filter.v_2_0_0.BinaryLogicOpType) ArrayList(java.util.ArrayList) DistanceBufferType(net.opengis.filter.v_2_0_0.DistanceBufferType) DateTime(org.joda.time.DateTime) BinaryTemporalOpType(net.opengis.filter.v_2_0_0.BinaryTemporalOpType) Test(org.junit.Test)

Example 18 with BinaryLogicOpType

use of org.geotoolkit.ogc.xml.v110.BinaryLogicOpType in project ddf by codice.

the class TestWfsFilterDelegate method testLogicalAndOrComparison.

private void testLogicalAndOrComparison(String methName, String compOpName) throws Exception {
    String mockProperty = "myPropertyName";
    String mockType = "myType";
    WfsFilterDelegate delegate = mockFeatureMetacardCreateDelegate(mockProperty, mockType);
    FilterType compFilter1 = delegate.propertyIsLike(Metacard.ANY_TEXT, LITERAL, true);
    FilterType compFilter2 = delegate.propertyIsLike(Metacard.ANY_TEXT, LITERAL, true);
    List<FilterType> filtersToCombine = new ArrayList<>();
    filtersToCombine.add(compFilter1);
    filtersToCombine.add(compFilter2);
    //Perform Test
    Method method = WfsFilterDelegate.class.getMethod(methName, List.class);
    FilterType filter = (FilterType) method.invoke(delegate, filtersToCombine);
    //Verify
    assertThat(filter.getLogicOps().getName().toString(), is(compOpName));
    BinaryLogicOpType logicOpType = (BinaryLogicOpType) filter.getLogicOps().getValue();
    Assert.assertThat(logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps().size(), is(2));
    for (JAXBElement<?> jaxbElement : logicOpType.getComparisonOpsOrSpatialOpsOrTemporalOps()) {
        PropertyIsLikeType compOpsType = (PropertyIsLikeType) jaxbElement.getValue();
        String valRef = fetchPropertyIsLikeExpression(compOpsType, VALUE_REFERENCE);
        assertThat(valRef, is(mockProperty));
        String literal = fetchPropertyIsLikeExpression(compOpsType, LITERAL);
        assertThat(literal, is(LITERAL));
    }
}
Also used : FilterType(net.opengis.filter.v_2_0_0.FilterType) BinaryLogicOpType(net.opengis.filter.v_2_0_0.BinaryLogicOpType) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) PropertyIsLikeType(net.opengis.filter.v_2_0_0.PropertyIsLikeType)

Example 19 with BinaryLogicOpType

use of org.geotoolkit.ogc.xml.v110.BinaryLogicOpType in project geo-platform by geosdi.

the class NotOperatorHandler method createLogicOps.

/**
 * @param elements
 * @return {@link UnaryLogicOpType}
 */
protected UnaryLogicOpType createLogicOps(@Nonnull(when = NEVER) List<JAXBElement<?>> elements, @Nonnull(when = NEVER) FilterType filter) {
    checkArgument(elements != null, "The Parameter elements must not be null.");
    checkArgument(filter != null, "The Parameter filter must not be null.");
    if (filter.isSetSpatialOps()) {
        elements.add(filter.getSpatialOps());
        filter.setSpatialOps(null);
    }
    UnaryLogicOpType unaryLogicOpType = new UnaryLogicOpType();
    BinaryLogicOpType and = new BinaryLogicOpType();
    and.setComparisonOpsOrSpatialOpsOrLogicOps(elements);
    unaryLogicOpType.setLogicOps(filterFactory.createAnd(and));
    return unaryLogicOpType;
}
Also used : UnaryLogicOpType(org.geosdi.geoplatform.xml.filter.v110.UnaryLogicOpType) BinaryLogicOpType(org.geosdi.geoplatform.xml.filter.v110.BinaryLogicOpType)

Example 20 with BinaryLogicOpType

use of org.geotoolkit.ogc.xml.v110.BinaryLogicOpType in project geo-platform by geosdi.

the class NotOperatorHandler method createComparisonOps.

/**
 * @param element
 * @return {@link UnaryLogicOpType}
 */
protected UnaryLogicOpType createComparisonOps(@Nonnull(when = NEVER) JAXBElement element, @Nonnull(when = NEVER) FilterType filter) {
    checkArgument(element != null, "The Parameter element must not be null.");
    checkArgument(filter != null, "The Parameter filter must not be null.");
    if (filter.isSetSpatialOps()) {
        List<JAXBElement<?>> elements = new ArrayList<>(2);
        elements.add(filter.getSpatialOps());
        filter.setSpatialOps(null);
        elements.add(element);
        UnaryLogicOpType unaryLogicOpType = new UnaryLogicOpType();
        BinaryLogicOpType and = new BinaryLogicOpType();
        and.setComparisonOpsOrSpatialOpsOrLogicOps(elements);
        unaryLogicOpType.setLogicOps(filterFactory.createAnd(and));
        return unaryLogicOpType;
    } else {
        UnaryLogicOpType unaryLogicOpType = new UnaryLogicOpType();
        unaryLogicOpType.setComparisonOps(element);
        return unaryLogicOpType;
    }
}
Also used : UnaryLogicOpType(org.geosdi.geoplatform.xml.filter.v110.UnaryLogicOpType) BinaryLogicOpType(org.geosdi.geoplatform.xml.filter.v110.BinaryLogicOpType) ArrayList(java.util.ArrayList) JAXBElement(javax.xml.bind.JAXBElement)

Aggregations

ArrayList (java.util.ArrayList)13 BinaryLogicOpType (net.opengis.filter.v_2_0_0.BinaryLogicOpType)11 FilterType (net.opengis.filter.v_2_0_0.FilterType)11 Test (org.junit.Test)10 JAXBElement (javax.xml.bind.JAXBElement)9 Method (java.lang.reflect.Method)6 DistanceBufferType (net.opengis.filter.v_2_0_0.DistanceBufferType)6 PropertyIsLikeType (net.opengis.filter.v_2_0_0.PropertyIsLikeType)6 Filter (org.opengis.filter.Filter)6 Marshaller (javax.xml.bind.Marshaller)4 Unmarshaller (javax.xml.bind.Unmarshaller)4 BinaryLogicOpType (org.geosdi.geoplatform.xml.filter.v110.BinaryLogicOpType)4 BinaryComparisonOperator (org.opengis.filter.BinaryComparisonOperator)4 Literal (org.opengis.filter.Literal)4 LogicalOperator (org.opengis.filter.LogicalOperator)4 ValueReference (org.opengis.filter.ValueReference)4 BinaryTemporalOpType (net.opengis.filter.v_2_0_0.BinaryTemporalOpType)3 LogicOpsType (org.geotoolkit.ogc.xml.v110.LogicOpsType)3 QueryImpl (ddf.catalog.operation.impl.QueryImpl)2 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)2