package org.geotools.styling.builder; import org.geotools.Builder; import org.geotools.factory.CommonFactoryFinder; import org.geotools.filter.expression.ChildExpressionBuilder; import org.geotools.styling.Displacement; import org.geotools.styling.StyleFactory; public class DisplacementBuilder<P> implements Builder<Displacement> { private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); private P parent; private ChildExpressionBuilder<DisplacementBuilder<P>> x = new ChildExpressionBuilder<DisplacementBuilder<P>>( this); private ChildExpressionBuilder<DisplacementBuilder<P>> y = new ChildExpressionBuilder<DisplacementBuilder<P>>( this); boolean unset = true; // current value is null public DisplacementBuilder() { parent = null; reset(); } public DisplacementBuilder(P parent) { this.parent = parent; reset(); } public Displacement build() { if (unset) { return null; } Displacement displacement = sf.displacement(x.build(), y.build()); return displacement; } public P end() { return parent; } public DisplacementBuilder<P> reset() { x.reset().literal(0); y.reset().literal(0); unset = false; return this; } public DisplacementBuilder<P> reset(Displacement displacement) { if (displacement == null) { return reset(); } x.reset().literal(displacement.getDisplacementX()); y.reset().literal(displacement.getDisplacementY()); unset = false; return this; } public DisplacementBuilder<P> unset() { x.unset(); y.unset(); unset = true; return this; } public DisplacementBuilder<P> reset(org.opengis.style.Displacement displacement) { if (displacement == null) { return reset(); } x.reset().literal(displacement.getDisplacementX()); y.reset().literal(displacement.getDisplacementY()); unset = false; return this; } }