package org.geotools.styling.builder;
import org.geotools.Builder;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.filter.SubFilterBuilder;
import org.geotools.styling.Extent;
import org.geotools.styling.FeatureTypeConstraint;
import org.geotools.styling.StyleFactory;
public class FeatureTypeConstraintBuilder<P> implements Builder<FeatureTypeConstraint> {
private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
private P parent;
boolean unset = true; // current value is null
private Extent[] extents;
private SubFilterBuilder<FeatureTypeConstraintBuilder<P>> filter = new SubFilterBuilder<FeatureTypeConstraintBuilder<P>>(
this);
private String featureTypeName;
public FeatureTypeConstraintBuilder() {
this(null);
}
public FeatureTypeConstraintBuilder(P parent) {
this.parent = parent;
reset();
}
public FeatureTypeConstraint build() {
if (unset) {
return null;
}
FeatureTypeConstraint constraint = sf.createFeatureTypeConstraint(featureTypeName, filter
.build(), extents);
return constraint;
}
public P end() {
return parent;
}
public FeatureTypeConstraintBuilder<P> reset() {
unset = false;
return this;
}
public FeatureTypeConstraintBuilder<P> reset(FeatureTypeConstraint constraint) {
if (constraint == null) {
return reset();
}
unset = false;
return this;
}
public FeatureTypeConstraintBuilder<P> unset() {
unset = true;
return this;
}
}