public Object visit(Divide expression, Object extraData) { Expression expr1 = visit(expression.getExpression1(), extraData); Expression expr2 = visit(expression.getExpression2(), extraData); return getFactory(extraData).divide(expr1, expr2); }
public DuplicatingStyleVisitor(StyleFactory styleFactory, FilterFactory2 filterFactory) { this.copyFilter = new DuplicatingFilterVisitor(filterFactory); this.sf = styleFactory; this.ff = filterFactory; this.STRICT = false; }
@Override public Object visit(PropertyIsBetween filter, Object extraData) { // TODO: support ProperyIsBetween (there are three expressions here) return super.visit(filter, extraData); }
public Object visit(And filter, Object extraData) { List<Filter> children = filter.getChildren(); List<Filter> newChildren = new ArrayList<Filter>(); for (Iterator<Filter> iter = children.iterator(); iter.hasNext(); ) { Filter child = iter.next(); if (child != null) { Filter newChild = (Filter) child.accept(this, extraData); newChildren.add(newChild); } } return getFactory(extraData).and(newChildren); }
@Override public Object visit(Or filter, Object extraData) { Or replace = process(filter); if (replace == null) return super.visit(filter, extraData); else return replace; }
public Object visit(Or filter, Object extraData) { List<Filter> children = filter.getChildren(); List<Filter> newChildren = new ArrayList<Filter>(); for (Iterator<Filter> iter = children.iterator(); iter.hasNext(); ) { Filter child = iter.next(); if (child != null) { Filter newChild = (Filter) child.accept(this, extraData); newChildren.add(newChild); } } return getFactory(extraData).or(newChildren); }
public Object visit(Multiply expression, Object extraData) { Expression expr1 = visit(expression.getExpression1(), extraData); Expression expr2 = visit(expression.getExpression2(), extraData); return getFactory(extraData).multiply(expr1, expr2); }
@Override public Object visit(PropertyName expression, Object extraData) { String name = expression.getPropertyName(); Expression ex = expressions.get(name); if (ex == null) { return super.visit(expression, extraData); } else { // inject the actual expression into the filter return ex; } } }
/** * Deep copy the filter. * * <p>Filter objects are mutable, when copying a rich data structure (like SLD) you will need to * duplicate the Filters referenced therein. */ public Filter duplicate(Filter filter) { DuplicatingFilterVisitor xerox = new DuplicatingFilterVisitor(ff); Filter copy = (Filter) filter.accept(xerox, ff); return copy; } /**
@Override public Object visit(NativeFilter filter, Object extraData) { return getFactory(extraData).nativeFilter(filter.getNative()); } }
public Object visit(Add expression, Object extraData) { Expression expr1 = visit(expression.getExpression1(), extraData); Expression expr2 = visit(expression.getExpression2(), extraData); return getFactory(extraData).add(expr1, expr2); }
@Override public Object visit(And filter, Object extraData) { And replace = process(filter); if (replace == null) return super.visit(filter, extraData); else return replace; }
private Filter duplicateFilter(Filter filter) { DuplicatingFilterVisitor visitor = new DuplicatingFilterVisitor(); Filter result = (Filter) filter.accept(visitor, ff); return result; } }
public Object visit(Literal expression, Object extraData) { return getFactory(extraData).literal(expression.getValue()); }
public Object visit(Subtract expression, Object extraData) { Expression expr1 = visit(expression.getExpression1(), extraData); Expression expr2 = visit(expression.getExpression2(), extraData); return getFactory(extraData).subtract(expr1, expr2); }
public Object visit(PropertyIsGreaterThanOrEqualTo filter, Object extraData) { return simplifyBinaryComparisonOperator( (BinaryComparisonOperator) super.visit(filter, extraData)); }
new DuplicatingFilterVisitor() { public Object visit(Or filter, Object extraData) { List<Filter> newChildren = children(filter, targetFilter, extraData);
public Object visit(Id filter, Object extraData) { return getFactory(extraData).id(filter.getIdentifiers()); }
public Object visit(PropertyIsNull filter, Object extraData) { Expression expr = visit(filter.getExpression(), extraData); return getFactory(extraData).isNull(expr); }
public Object visit(PropertyIsLessThanOrEqualTo filter, Object extraData) { return simplifyBinaryComparisonOperator( (BinaryComparisonOperator) super.visit(filter, extraData)); }