private static void export( XMLStreamWriter writer, And andOp ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( FES_20_NS, "And" ); for ( int i = 0; i < andOp.getSize(); i++ ) { export( andOp.getParameter( i ), writer ); } writer.writeEndElement(); }
static OperatorFilter buildFilter( Operator operator, FeatureType ft, Envelope clickBox ) { if ( ft == null ) { if ( operator == null ) { return null; } return new OperatorFilter( operator ); } LinkedList<Operator> list = findOperators( ft, clickBox ); if ( list.size() > 1 ) { Or or = new Or( list.toArray( new Operator[list.size()] ) ); if ( operator == null ) { return new OperatorFilter( or ); } return new OperatorFilter( new And( operator, or ) ); } if ( list.isEmpty() ) { // obnoxious case where feature has no geometry properties (but features may have extra geometry props) if ( operator == null ) { return new OperatorFilter( new Intersects( null, clickBox ) ); } return new OperatorFilter( new And( operator, new Intersects( null, clickBox ) ) ); } if ( operator == null ) { return new OperatorFilter( list.get( 0 ) ); } return new OperatorFilter( new And( operator, list.get( 0 ) ) ); }
/** * @param filter * can be null * @return the reverse of #addBBoxConstraint */ public static Pair<Filter, Envelope> splitOffBBoxConstraint( Filter filter ) { Pair<Filter, Envelope> p = new Pair<Filter, Envelope>(); if ( filter instanceof OperatorFilter ) { OperatorFilter f = (OperatorFilter) filter; if ( f.getOperator() instanceof BBOX ) { p.second = ( (BBOX) f.getOperator() ).getBoundingBox(); } else if ( f.getOperator() instanceof And && ( (And) f.getOperator() ).getParams()[0] instanceof BBOX ) { Operator[] ops = ( (And) f.getOperator() ).getParams(); p.second = ( (BBOX) ops[0] ).getBoundingBox(); if ( ops.length == 2 ) { p.first = new OperatorFilter( ops[1] ); } else { p.first = new OperatorFilter( new And( Arrays.copyOfRange( ops, 1, ops.length - 1 ) ) ); } } else { p.first = filter; } } else { p.first = filter; } return p; }
@Override public String toString( String indent ) { String s = indent + "-And\n"; for ( int i = 0; i < getSize(); i++ ) { s += params.get( i ).toString( indent + " " ); } return s; }
private static OperatorFilter combine( boolean and, OperatorFilter f1, OperatorFilter f2 ) { if ( f1 == null || f2 == null ) { return f1 == null ? f2 : f1; } Operator o1 = f1.getOperator(); Operator o2 = f2.getOperator(); if ( and ) { return new OperatorFilter( new And( o1, o2 ) ); } return new OperatorFilter( new Or( o1, o2 ) ); }
return new OperatorFilter( new And( ops.toArray( new Operator[ops.size()] ) ) );
case AND: And andOp = (And) operator; for ( int i = 0; i < andOp.getSize(); i++ ) { export( andOp.getParameter( i ), writer );
bboxFilter = new OperatorFilter( bboxOperator ); } else { And andOperator = new And( bboxOperator, ( (OperatorFilter) filter ).getOperator() ); bboxFilter = new OperatorFilter( andOperator );
throw new XMLParsingException( xmlStream, msg ); logicalOperator = new And( innerOperators.toArray( new Operator[innerOperators.size()] ) ); break;
throw new XMLParsingException( xmlStream, msg ); logicalOperator = new And( innerOperators.toArray( new Operator[innerOperators.size()] ) ); break;
throw new XMLParsingException( xmlStream, msg ); logicalOperator = new And( innerOperators.toArray( new Operator[innerOperators.size()] ) ); break;
private static LogicalOperator repair( LogicalOperator o, Map<String, QName> bindings, Set<QName> validNames ) { Operator[] os = o.getParams(); for ( int i = 0; i < os.length; ++i ) { os[i] = repair( os[i], bindings, validNames ); } switch ( o.getSubType() ) { case AND: return new And( os ); case NOT: return new Not( os[0] ); case OR: return new Or( os ); } return o; }