package org.geotools.styling.builder; import java.util.HashMap; import java.util.Map; import javax.measure.unit.Unit; import org.geotools.styling.ExtensionSymbolizer; import org.opengis.filter.expression.Expression; /** * * * @source $URL$ */ public class ExtensionSymbolizerBuilder extends AbstractStyleBuilder<ExtensionSymbolizer> { private String name; private Expression geometry; private DescriptionBuilder description = new DescriptionBuilder(this).unset(); private Unit<?> uom; private String extensionName; private Map<String, Expression> parameters = new HashMap<String, Expression>(); public ExtensionSymbolizerBuilder() { this(null); } public ExtensionSymbolizerBuilder(AbstractStyleBuilder<?> parent) { super(parent); reset(); } public ExtensionSymbolizerBuilder name(String name) { unset = false; this.name = name; return this; } public ExtensionSymbolizerBuilder geometry(Expression geometry) { this.geometry = geometry; this.unset = false; return this; } public ExtensionSymbolizerBuilder geometryName(String geometry) { return geometry(property(geometry)); } public ExtensionSymbolizerBuilder geometry(String cqlExpression) { return geometry(cqlExpression(cqlExpression)); } public ExtensionSymbolizerBuilder uom(Unit<?> uom) { unset = false; this.uom = uom; return this; } public ExtensionSymbolizerBuilder extensionName(String extensionName) { unset = false; this.extensionName = extensionName; return this; } public DescriptionBuilder description() { unset = false; return description; } public ExtensionSymbolizerBuilder param(String name, Expression param) { this.unset = false; parameters.put(name, param); return this; } public ExtensionSymbolizer build() { if (unset) { return null; } ExtensionSymbolizer symbolizer = sf.extensionSymbolizer(name, null, description.build(), uom, extensionName, parameters); symbolizer.setGeometry(geometry); if (parent == null) { reset(); } return symbolizer; } public ExtensionSymbolizerBuilder reset() { name = null; geometry = null; description.unset(); uom = null; extensionName = null; parameters = new HashMap<String, Expression>(); unset = false; return this; } public ExtensionSymbolizerBuilder reset(ExtensionSymbolizer symbolizer) { if (symbolizer == null) { return unset(); } this.name = symbolizer.getName(); this.geometry = symbolizer.getGeometry(); this.description.reset(symbolizer.getDescription()); this.uom = symbolizer.getUnitOfMeasure(); this.extensionName = symbolizer.getExtensionName(); this.parameters.clear(); this.parameters.putAll(symbolizer.getParameters()); unset = false; return this; } public ExtensionSymbolizerBuilder unset() { return (ExtensionSymbolizerBuilder) super.unset(); } @Override protected void buildStyleInternal(StyleBuilder sb) { sb.featureTypeStyle().rule().extension().init(this); } }