package org.geotools.styling.builder; import javax.measure.quantity.Length; import javax.measure.unit.Unit; import org.geotools.Builder; import org.geotools.styling.PointSymbolizer; import org.opengis.filter.expression.Expression; /** * * * @source $URL$ */ public class PointSymbolizerBuilder extends AbstractStyleBuilder<PointSymbolizer> { Expression geometry; GraphicBuilder graphic = new GraphicBuilder(this).unset(); Unit<Length> uom = null; public PointSymbolizerBuilder() { this(null); } public PointSymbolizerBuilder(AbstractStyleBuilder<?> parent) { super(parent); reset(); } public PointSymbolizerBuilder geometry(Expression geometry) { this.geometry = geometry; return this; } public PointSymbolizerBuilder geometry(String cqlExpression) { return geometry(cqlExpression(cqlExpression)); } public GraphicBuilder graphic() { unset = false; return graphic; } public PointSymbolizerBuilder uom(Unit<Length> uom) { this.uom = uom; return this; } public PointSymbolizer build() { if (unset) { return null; } PointSymbolizer ps = sf.createPointSymbolizer(); ps.setGeometry(geometry); ps.setGraphic(graphic.build()); if (uom != null) { ps.setUnitOfMeasure(uom); } if (parent == null) { reset(); } return ps; } public PointSymbolizerBuilder reset() { this.geometry = null; this.graphic.reset(); // TODO: See what the actual default is this.uom = null; unset = false; return this; } public Builder<PointSymbolizer> reset(PointSymbolizer original) { if (original == null) { return unset(); } this.geometry = original.getGeometry(); this.graphic.reset(original.getGraphic()); this.uom = original.getUnitOfMeasure(); unset = false; return this; } public Builder<PointSymbolizer> reset(org.opengis.style.PointSymbolizer original) { if (original == null) { return unset(); } else if (original instanceof PointSymbolizer) { return reset((PointSymbolizer) original); } this.geometry = property(original.getGeometryPropertyName()); this.graphic.reset(original.getGraphic()); this.uom = original.getUnitOfMeasure(); unset = false; return this; } public PointSymbolizerBuilder unset() { return (PointSymbolizerBuilder) super.unset(); } @Override protected void buildStyleInternal(StyleBuilder sb) { sb.featureTypeStyle().rule().point().reset(this.build()); } }