package org.geotools.styling.builder; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.measure.unit.Unit; import org.geotools.Builder; import org.geotools.factory.CommonFactoryFinder; import org.geotools.filter.expression.ChildExpressionBuilder; import org.geotools.styling.ExtensionSymbolizer; import org.geotools.styling.StyleFactory; import org.opengis.filter.expression.Expression; import org.opengis.style.Description; public class ExtensionSymbolizerBuilder<P> implements Builder<ExtensionSymbolizer> { private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); private P parent; boolean unset = true; // current value is null private String name; private String geometry; private Description description; private Unit<?> unit; private String extensionName; private Map<String, ChildExpressionBuilder<ExtensionSymbolizerBuilder<P>>> parameters = new HashMap<String, ChildExpressionBuilder<ExtensionSymbolizerBuilder<P>>>(); public ExtensionSymbolizerBuilder() { this(null); } public ExtensionSymbolizerBuilder(P parent) { this.parent = parent; reset(); } public ExtensionSymbolizer build() { if (unset) { return null; } Map<String, Expression> params = new HashMap<String, Expression>(); for (Entry<String, ChildExpressionBuilder<ExtensionSymbolizerBuilder<P>>> entry : parameters .entrySet()) { params.put(entry.getKey(), entry.getValue().build()); } ExtensionSymbolizer symbolizer = sf.extensionSymbolizer(name, geometry, description, unit, extensionName, params); return symbolizer; } public P end() { return parent; } public ExtensionSymbolizerBuilder<P> reset() { unset = false; return this; } public ExtensionSymbolizerBuilder<P> reset(ExtensionSymbolizer symbolizer) { if (symbolizer == null) { return reset(); } unset = false; return this; } public ExtensionSymbolizerBuilder<P> unset() { unset = true; return this; } }