Package org.geotools.filter

Examples of org.geotools.filter.Capabilities


        return capabilities.getFilterCapabilities();
    }
   
    public Filter[] splitFilters(Filter filter) {
        FilterCapabilities filterCapabilities = getFilterCapabilities();
        Capabilities filterCaps = new Capabilities();
        if (filterCapabilities != null) {
            filterCaps.addAll(filterCapabilities);
        }
        return strategy.splitFilters(filterCaps, filter);
    }
View Full Code Here


   
    private static Capabilities createFilterCapabilities() {

        // Create Capabilities helper class
        //
        Capabilities capabilities = new Capabilities();

        // Add EFeature ID filter capability
        //
        capabilities.addType(Id.class);

        // Add Include All filter capability
        //
        capabilities.addType(IncludeFilter.class);

        // Add Exclude All filter capability
        //
        capabilities.addType(ExcludeFilter.class);

        // Add logical operators (AND, OR, NOT)
        //
        capabilities.addAll(Capabilities.LOGICAL);

        // Add simple comparators
        //
        capabilities.addAll(Capabilities.SIMPLE_COMPARISONS);

        // Add special comparators
        //
        capabilities.addName(PropertyIsNull.NAME);

        // Add spatial operations
        //
        capabilities.addName(BBOX.NAME);
        capabilities.addName(Equals.NAME);
        capabilities.addName(Disjoint.NAME);
        capabilities.addName(Intersects.NAME);
        capabilities.addName(Touches.NAME);
        capabilities.addName(Crosses.NAME);
        capabilities.addName(Within.NAME);
        capabilities.addName(Contains.NAME);
        capabilities.addName(Overlaps.NAME);
        capabilities.addName(Beyond.NAME);
        capabilities.addName(DWithin.NAME);

        // Finished
        //
        return capabilities;
View Full Code Here

     */
    @Override
    public Filter[] splitFilters(QName typeName, Filter filter) {

        FilterCapabilities filterCapabilities = getFilterCapabilities();
        Capabilities filterCaps = new Capabilities();
        if (filterCapabilities != null) {
            filterCaps.addAll(filterCapabilities);
            /*
             * General Fix for WFS 1.0 naming the "Intersects" spatial operation "Intersect", which
             * will make the CapabilitiesFilterSplitter think Intersects is not supported at
             * splitFilters
             */
            if (Versions.v1_0_0.equals(getServiceVersion())) {
                SpatialCapabilities spatialCaps = filterCapabilities.getSpatialCapabilities();
                if (spatialCaps != null) {
                    SpatialOperators spatialOps = spatialCaps.getSpatialOperators();
                    if (spatialOps != null) {
                        if (null != spatialOps.getOperator("Intersect")) {
                            trace("WFS 1.0 capabilities states the spatial operator Intersect. ",
                                    "Assuming it is Intersects and adding Intersects as a supported filter type");
                            filterCaps.addName(Intersects.NAME);
                        }
                    }
                }
            }
        }
View Full Code Here

        Filter funtionFilter = createFunctionFilter();
        Filter geomFilter = ff.bbox(geomAtt, 10.0, 20.0, 10.0, 20.0, "");

        Filter orFilter = ff.or(funtionFilter, geomFilter);
        visitor = new CapabilitiesFilterSplitter(new Capabilities(), null, null);
        orFilter.accept(visitor, null);

        assertEquals(Filter.INCLUDE, visitor.getFilterPre());
        assertEquals(orFilter, visitor.getFilterPost());
View Full Code Here

        assertEquals(f1, visitor.getFilterPost());
    }
   
    @Test
    public void testAndOptimization() throws Exception {
        Capabilities caps = new Capabilities();
        // no logical operator capabilities
        caps.addAll(Capabilities.SIMPLE_COMPARISONS_OPENGIS);
       
        visitor = newVisitor(caps);

        // try with two filters
        Filter f1 = ff.greater(ff.property("foo"), ff.literal(42));
View Full Code Here

        FilterCapabilities filterCapabilities = caps.getContents();
        IdCapabilities idCapabilities = filterCapabilities.getIdCapabilities();
        if (idCapabilities != null && (idCapabilities.hasEID() || idCapabilities.hasFID())) {
            // server supports ID Filters so we need to check our queryFilter is valid           
           
            Capabilities idFilterCaps = new Capabilities();
            idFilterCaps.addName("Id");
           
            CapabilitiesFilterSplitter splitter = new CapabilitiesFilterSplitter(idFilterCaps, null, null);
            queryFilter.accept(splitter, null);
       
            Filter server = splitter.getFilterPre();
            if (server.equals(Filter.INCLUDE)) {
                // ID Filters not found in the root Filter
                // remove ID Filter from Capabilities
                FilterCapabilities filterCapabilitiesWithoutId = new FilterCapabilitiesImpl(
                        filterCapabilities.getVersion(),
                        filterCapabilities.getScalarCapabilities(),
                        filterCapabilities.getSpatialCapabilities(),
                        null,
                        filterCapabilities.getTemporalCapabilities());

                Capabilities capabilitiesWithoutId = new Capabilities();
                capabilitiesWithoutId.addAll(filterCapabilitiesWithoutId);
               
                return splitFilters(capabilitiesWithoutId, queryFilter);               
            } else {
                // ID Filter found
                // query the server using the ID Filter
View Full Code Here

     *            the attribute in filter that is queried. If null then edit test is not ran.
     */
    protected void runTest(Filter filter, Capabilities supportedCaps, String attToEdit)
            throws SchemaException {
        // initialize fields that might be previously modified in current test
        CapabilitiesFilterSplitter visitor = newVisitor(new Capabilities());
        if (accessor != null)
            accessor.setUpdate("", null);

        // Testing when FilterCapabilites indicate that filter type is not supported
        filter.accept(visitor, null);
View Full Code Here

    filterFunction_abs.setParameters(Arrays.asList(new Expression[]{ff.property("name")}));
        PropertyIsEqualTo filter2 = ff.equals(ff.property("name"), filterFunction_abs);
   
    Filter filter=ff.and(filter1,filter2);

        visitor = newVisitor(new Capabilities());       
        filter.accept(visitor, null);
   
    assertEquals(Filter.INCLUDE, visitor.getFilterPre());
    assertEquals(filter, visitor.getFilterPost());
       
        Capabilities filterCapabilitiesMask = new Capabilities();

    filterCapabilitiesMask.addName(testFunction.getName());
    filterFunction_abs = new FilterFunction_abs();
    filterCapabilitiesMask.addName(filterFunction_abs.getName());
    filterCapabilitiesMask.addAll(Capabilities.SIMPLE_COMPARISONS_OPENGIS);
        filterCapabilitiesMask.addAll(Capabilities.LOGICAL_OPENGIS);
    visitor=newVisitor(filterCapabilitiesMask);

        filter.accept(visitor, null);
   
    assertEquals(Filter.INCLUDE, visitor.getFilterPost());
View Full Code Here

        filterFunction_abs.setParameters(Arrays.asList(new Expression[]{ff.property("name")}));
        PropertyIsEqualTo filter2 = ff.equals(ff.property("name"), filterFunction_abs);
       
        Filter filter=ff.and(filter1,filter2);

        Capabilities filterCapabilitiesMask = new Capabilities();
    filterCapabilitiesMask.addName(testFunction.getName(), testFunction.getParameters().size());
    filterCapabilitiesMask.addAll(Capabilities.SIMPLE_COMPARISONS_OPENGIS);
        filterCapabilitiesMask.addAll(Capabilities.LOGICAL_OPENGIS);
    visitor=newVisitor(filterCapabilitiesMask);

        filter.accept(visitor, null);
   
    assertEquals(filter1, visitor.getFilterPre());
View Full Code Here

        PropertyIsEqualTo filter = ff.equals(geomTypeExpr, ff.literal("Polygon"));
        return filter;
    }

    protected Capabilities newCapabilities(Class type) {
        Capabilities caps = new Capabilities();
        caps.addType(type);
        return caps;
    }
View Full Code Here

TOP

Related Classes of org.geotools.filter.Capabilities

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.