Package org.opengis.filter

Examples of org.opengis.filter.FilterFactory2


         *      org.geotools.xml.schema.ElementValue[],
         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints)
                throws SAXException {
            FilterFactory2 factory = FilterSchema.filterFactory(hints);

            try {
                Expression expr1 = (Expression) value[0].getValue();
                Expression expr2 = (Expression) value[1].getValue();

                short type = findFilterType(element.getName());
                switch (type) {
                case FilterType.COMPARE_EQUALS:
                    return factory.equals(expr1, expr2);

                case FilterType.COMPARE_GREATER_THAN:
                    return factory.greater(expr1, expr2);

                case FilterType.COMPARE_GREATER_THAN_EQUAL:
                    return factory.greaterOrEqual(expr1, expr2);

                case FilterType.COMPARE_LESS_THAN:
                    return factory.less(expr1, expr2);

                case FilterType.COMPARE_LESS_THAN_EQUAL:
                    return factory.lessOrEqual(expr1, expr2);

                case FilterType.COMPARE_NOT_EQUALS:
                    return factory.notEqual(expr1, expr2);
                default:
                    throw new SAXException("Illegal filter for " + element);
                }
            } catch (ClassCastException filterRequired) {
                throw new SAXException("Illegal filter for " + element, filterRequired);
View Full Code Here


         *      org.geotools.xml.schema.ElementValue[],
         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints)
                throws SAXException {
            FilterFactory2 factory = FilterSchema.filterFactory(hints);

            try {
                short type = (short) SpatialOpsType.findFilterType(element.getName());

                Expression geometry1 = (Expression) value[0].getValue();
                Expression geometry2 = (Expression) value[1].getValue();

                // GeometryFilter filter = factory.createGeometryFilter( type );
                switch (type) {
                case FilterType.GEOMETRY_EQUALS:
                    return factory.equal(geometry1, geometry2);

                case FilterType.GEOMETRY_DISJOINT:
                    return factory.disjoint(geometry1, geometry2);

                case FilterType.GEOMETRY_INTERSECTS:
                    return factory.intersects(geometry1, geometry2);

                case FilterType.GEOMETRY_CROSSES:
                    return factory.crosses(geometry1, geometry2);

                case FilterType.GEOMETRY_WITHIN:
                    return factory.within(geometry1, geometry2);

                case FilterType.GEOMETRY_CONTAINS:
                    return factory.contains(geometry1, geometry2);

                case FilterType.GEOMETRY_OVERLAPS:
                    return factory.overlaps(geometry1, geometry2);

                case FilterType.GEOMETRY_TOUCHES:
                    return factory.touches(geometry1, geometry2);

                default:
                    throw new SAXException("Illegal filter for " + element);
                }
            } catch (ClassCastException filterRequired) {
View Full Code Here

                throws SAXException {

            if (value == null || value.length != 2) {
                throw new SAXException("ogc:propertyName or gml:box required for bbox filter");
            }
            FilterFactory2 factory = FilterSchema.filterFactory(hints);
            try {
                Expression geometry1 = (Expression) value[0].getValue();
                Expression geometry2 = (Expression) value[1].getValue();
                if( geometry2 instanceof Literal ){
                    Object literal = ((Literal) geometry2).getValue();
                    if( literal instanceof Geometry){
                        Geometry geometry = (Geometry) literal;
                        Envelope env = geometry.getEnvelopeInternal();
                        return factory.bbox(geometry1, env.getMinX(), env.getMinY(), env.getMaxX(), env.getMaxY(), null );
                    }
                }
                Disjoint disjoint = factory.disjoint(geometry1, geometry2);
                return factory.not( disjoint );
               
            } catch (ClassCastException wrong) {
                throw new SAXException("ogc:propertyName or gml:box required for bbox filter",
                        wrong);
            } catch (IllegalFilterException illegalFilterException) {
View Full Code Here

         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value,
            Attributes attrs, Map hints) throws SAXException {
                   
          FilterFactory2 factory = FilterSchema.filterFactory( hints );
          try {
            Expression geometry1 =  (Expression) value[0].getValue();
            Expression geometry2 = (Expression) value[1].getValue();
            Literal literal = (Literal) value[2];
            double distance = ((Number)literal.getValue()).doubleValue();           
            return factory.beyond(geometry1, geometry2, distance, null)
          }
          catch( ClassCastException wrong){
            throw new SAXException( wrong );
          } catch (IllegalFilterException illegalFilterException) {
            throw new SAXException( illegalFilterException );
View Full Code Here

         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value,
            Attributes attrs, Map hints) throws SAXException {
         
          FilterFactory2 factory = FilterSchema.filterFactory( hints );
          try {
              Expression geometry1 =  (Expression) value[0].getValue();
                    Expression geometry2 = (Expression) value[1].getValue();
                    Literal literal = (Literal) value[2];
                    double distance = ((Number)literal.getValue()).doubleValue();
                    return factory.dwithin(geometry1, geometry2, distance, null );
          }
          catch( ClassCastException wrong){
            throw new SAXException( wrong );
          } catch (IllegalFilterException illegalFilterException) {
            throw new SAXException( illegalFilterException );
View Full Code Here

         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value,
            Attributes attrs, Map hints) throws SAXException {
         
          FilterFactory2 factory = FilterSchema.filterFactory( hints );
          String name = element.getName();
          short type;
          if( "and".equalsIgnoreCase( name )){
            type = FilterType.LOGIC_AND;
          }
          else if( "or".equalsIgnoreCase( name )){
            type = FilterType.LOGIC_OR;
          }
          else {
            throw new SAXException("Expected AND or OR logic filter" );
          }
          try {
              ArrayList<org.opengis.filter.Filter> children = new ArrayList<org.opengis.filter.Filter>( value.length );
              Set<Identifier> ids = new HashSet<Identifier>( value.length );
              boolean fidOnly = true;
             
        //LogicFilter filter = factory.createLogicFilter( type );
        for( int i=0; i<value.length; i++){
            Filter filter = (Filter) value[i];
            if( filter instanceof Id ){
                Id id = (Id) filter;
                ids.addAll( id.getIdentifiers() );
            }
            else {
                fidOnly = false;
            }
            children.add( filter );
        }
          if( type == FilterType.LOGIC_OR ){
            if( fidOnly ){
                return factory.id( ids );
            }
            else {
                return factory.or( children );
            }           
        }
          else {
              return factory.and( children );
          }       
      }
          catch( ClassCastException filterRequired ){
            throw new SAXException("Illegal filter for "+element, filterRequired );
      }
View Full Code Here

        assertTrue(sqlFilter instanceof PropertyIsGreaterThan);
        // commented out, assertion changed by commit 504f04fb
        // assertTrue(String.valueOf(unsupportedFilter), unsupportedFilter instanceof
        // PropertyIsEqualTo);

        FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
        // @id = 'DELETEME.1' AND STRING_COL = 'test'
        filter = ff.and(ff.id(Collections.singleton(ff.featureId(typeName + ".1"))),
                ff.equals(ff.property("STRING_COL"), ff.literal("test")));

        filteringQuery = new Query(typeName, filter);
        // filteringQuery based on the above filter...
        sdeQuery = createFilteringQuery();

        try {
            filters = sdeQuery.getFilters();
        } finally {
            sdeQuery.session.dispose();
            sdeQuery.close();
        }
        geometryFilter = filters.getGeometryFilter();
        sqlFilter = filters.getSqlFilter();
        unsupportedFilter = filters.getUnsupportedFilter();

        System.out.println("geom: " + geometryFilter + ", sql: " + sqlFilter + ", unsupp: "
                + unsupportedFilter);

        Assert.assertEquals(Filter.INCLUDE, geometryFilter);
        assertTrue(String.valueOf(sqlFilter), sqlFilter instanceof And);
        Assert.assertEquals(Filter.INCLUDE, unsupportedFilter);

        // AND( @id = 'DELETEME.1' )
        List<Filter> singleAnded = Collections.singletonList((Filter) ff.id(Collections
                .singleton(ff.featureId(typeName + ".1"))));
        filter = ff.and(singleAnded);

        filteringQuery = new Query(typeName, filter);
        // filteringQuery based on the above filter...
        sdeQuery = createFilteringQuery();
View Full Code Here

         *      org.geotools.xml.schema.ElementValue[],
         *      org.xml.sax.Attributes, java.util.Map)
         */
        public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints)
                throws SAXException {
            FilterFactory2 factory = FilterSchema.filterFactory(hints);
            String name = element.getName();
            short type;
            if ("and".equalsIgnoreCase(name)) {
                type = FilterType.LOGIC_AND;
            } else if ("or".equalsIgnoreCase(name)) {
                type = FilterType.LOGIC_OR;
            } else if ("not".equalsIgnoreCase(name)) {
                type = FilterType.LOGIC_NOT;
            } else {
                throw new SAXException("Expected AND or OR logic filter");
            }
            if (value == null || value.length != 1) {
                throw new SAXException("Require a single filter for " + element);
            }
            try {

                Filter filter = (Filter) value[0].getValue();

                return factory.not(filter);
            } catch (ClassCastException filterRequired) {
                throw new SAXException("Require a single filter for " + element, filterRequired);
            } catch (IllegalFilterException e) {
                throw new SAXException("Illegal filter for " + element);
            }
View Full Code Here

           
            // === create the filter
            // loop values and AND them
            final int size = values.size();
            final List<Filter> filters = new ArrayList<Filter>();
            FilterFactory2 ff = FeatureUtilities.DEFAULT_FILTER_FACTORY;
            for (int i = 0; i < size; i++) {
                // checks
                Object value = values.get(i);
                if (value == null) {
                    if (LOGGER.isLoggable(Level.INFO)) {
                        LOGGER.info("Ignoring null date for the filter:" + this.identifier);
                    }
                    continue;
                }
                if (domainType == DomainType.SINGLE_VALUE) {
                    // Domain made of single values
                    if(value instanceof Range){
                        // RANGE                       
                        final Range range= (Range)value;
                        filters.add(
                                ff.and(
                                        ff.lessOrEqual(
                                                ff.property(propertyName),
                                                ff.literal(range.getMaxValue())),
                                        ff.greaterOrEqual(
                                                ff.property(propertyName),
                                                ff.literal(range.getMinValue()))
                                ));
                    else {
                        // SINGLE value
                        filters.add(
                                ff.equal(
                                        ff.property(propertyName),
                                        ff.literal(value),true)
                                    );
                    }
                } else { //domainType == DomainType.RANGE
                    // Domain made of ranges such as (beginTime,endTime) , (beginElevation,endElevation) , ...
                    if(value instanceof Range){
                        // RANGE                       
                        final Range range= (Range)value;
                        final Comparable maxValue = range.getMaxValue();
                        final Comparable minValue = range.getMinValue();
                        if(maxValue.compareTo(minValue)!=0){
                            // logic comes from Range.intersectsNC(Range)
                            // in summary, requestedMax > min && requestedMin < max
                            Filter maxCondition = ff.greaterOrEqual(
                                                        ff.literal(maxValue),
                                                        ff.property(propertyName));
                            Filter minCondition = ff.lessOrEqual(
                                                        ff.literal(minValue),
                                                        ff.property(additionalPropertyName));
                           
                            filters.add(ff.and(Arrays.asList(maxCondition,minCondition)));
                            continue;
                        } else {
                            value=maxValue;
                        }
                    }
                    filters.add(
                            ff.and(
                                    ff.lessOrEqual(
                                            ff.property(propertyName),
                                            ff.literal(value)),
                                    ff.greaterOrEqual(
                                            ff.property(additionalPropertyName),
                                            ff.literal(value))));
                }
            }
            return ff.or(filters);
        }
View Full Code Here

        NamespaceSupport namespaces = new NamespaceSupport();
        namespaces.declarePrefix("gml", GML.NAMESPACE);
        namespaces.declarePrefix("xmml", XMMLNS);
        namespaces.declarePrefix("xlink", XLINK.NAMESPACE);

        FilterFactory2 ff = new FilterFactoryImplNamespaceAware(namespaces);
        String xpathExpression = "sa:shape/geo:LineByVector/geo:origin/@xlink:href";
        PropertyName propNameExpression = ff.property(xpathExpression);

        visitor = new UnmappingFilterVisitor(mapping);

        List /* <Expression> */unrolled = (List) propNameExpression.accept(visitor, null);
        assertNotNull(unrolled);
View Full Code Here

TOP

Related Classes of org.opengis.filter.FilterFactory2

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.