package org.geotools.styling.builder;
import org.geotools.Builder;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.styling.LineSymbolizer;
import org.geotools.styling.Stroke;
import org.geotools.styling.StyleFactory;
public class LineSymbolizerBuilder<P> implements Builder<LineSymbolizer> {
StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
P parent;
StrokeBuilder<LineSymbolizerBuilder<P>> strokeBuilder = new StrokeBuilder<LineSymbolizerBuilder<P>>(this);
String geometry = null;
private boolean unset = false;
public LineSymbolizerBuilder(){
this( null );
}
public LineSymbolizerBuilder( P parent ){
this.parent = parent;
reset();
}
public P end() {
return parent;
}
public LineSymbolizerBuilder<P> geometry(String geometry) {
this.geometry = geometry;
unset = false;
return this;
}
public StrokeBuilder<LineSymbolizerBuilder<P>> stroke() {
unset = false;
return strokeBuilder;
}
public LineSymbolizer build() {
if( unset ){
return null; // builder was constructed but never used
}
Stroke stroke = strokeBuilder == null ? strokeBuilder.build() : Stroke.DEFAULT;
LineSymbolizer ls = sf.createLineSymbolizer(stroke, geometry);
reset();
return ls;
}
public LineSymbolizerBuilder<P> reset() {
strokeBuilder.reset();
geometry = null;
unset = false;
return this;
}
public LineSymbolizerBuilder<P> reset( LineSymbolizer origional ){
return this;
}
public Builder<LineSymbolizer> unset() {
strokeBuilder.reset();
geometry = null;
unset = true;
return this;
}
}