package org.geotools.styling.builder;
import javax.measure.quantity.Length;
import javax.measure.unit.Unit;
import org.geotools.styling.PolygonSymbolizer;
import org.opengis.filter.expression.Expression;
/**
*
*
* @source $URL$
*/
public class PolygonSymbolizerBuilder extends AbstractStyleBuilder<PolygonSymbolizer> {
StrokeBuilder stroke = new StrokeBuilder(this).unset();
FillBuilder fill = new FillBuilder(this).unset();
Expression geometry = null;
Unit<Length> uom;
public PolygonSymbolizerBuilder() {
this(null);
}
PolygonSymbolizerBuilder(AbstractStyleBuilder<?> parent) {
super(parent);
reset();
}
public PolygonSymbolizerBuilder geometry(Expression geometry) {
this.geometry = geometry;
return this;
}
public PolygonSymbolizerBuilder geometry(String cqlExpression) {
return geometry(cqlExpression(cqlExpression));
}
public StrokeBuilder stroke() {
unset = false;
stroke.reset();
return stroke;
}
public FillBuilder fill() {
unset = false;
fill.reset();
return fill;
}
public PolygonSymbolizerBuilder uom(Unit<Length> uom) {
unset = false;
this.uom = uom;
return this;
}
public PolygonSymbolizer build() {
if (unset) {
return null;
}
PolygonSymbolizer ps = sf.createPolygonSymbolizer(stroke.build(), fill.build(), null);
if (geometry != null) {
ps.setGeometry(geometry);
}
if (uom != null) {
ps.setUnitOfMeasure(uom);
}
if (parent == null) {
reset();
}
return ps;
}
public PolygonSymbolizerBuilder reset() {
stroke.unset();
fill.unset();
unset = false;
return this;
}
public PolygonSymbolizerBuilder reset(org.opengis.style.PolygonSymbolizer symbolizer) {
if (symbolizer == null) {
return unset();
}
if (symbolizer instanceof PolygonSymbolizer) {
return reset((PolygonSymbolizer) symbolizer);
}
stroke.reset(symbolizer.getStroke());
fill.reset(symbolizer.getFill());
uom = symbolizer.getUnitOfMeasure();
geometry = property(symbolizer.getGeometryPropertyName());
unset = false;
return this;
}
public PolygonSymbolizerBuilder reset(PolygonSymbolizer symbolizer) {
if (symbolizer == null) {
return unset();
}
stroke.reset(symbolizer.getStroke());
fill.reset(symbolizer.getFill());
uom = symbolizer.getUnitOfMeasure();
geometry = symbolizer.getGeometry();
unset = false;
return this;
}
public PolygonSymbolizerBuilder unset() {
return (PolygonSymbolizerBuilder) super.unset();
}
@Override
protected void buildStyleInternal(StyleBuilder sb) {
sb.featureTypeStyle().rule().polygon().init(this);
}
}