package org.geotools.styling.builder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.geotools.styling.Extent; import org.geotools.styling.FeatureTypeConstraint; import org.opengis.filter.Filter; /** * * * @source $URL$ */ public class FeatureTypeConstraintBuilder extends AbstractSLDBuilder<FeatureTypeConstraint> { private List<Extent> extents = new ArrayList<Extent>(); private Filter filter; private String featureTypeName; public FeatureTypeConstraintBuilder() { this(null); } public FeatureTypeConstraintBuilder(AbstractSLDBuilder<?> parent) { super(parent); reset(); } public FeatureTypeConstraintBuilder extent(String name, String value) { this.unset = false; extents.add(sf.createExtent(name, value)); return this; } public FeatureTypeConstraintBuilder filter(Filter filter) { this.unset = false; this.filter = filter; return this; } public FeatureTypeConstraintBuilder featureTypeName(String name) { this.unset = false; this.featureTypeName = name; return this; } public FeatureTypeConstraint build() { if (unset) { return null; } Extent[] ea = (Extent[]) extents.toArray(new Extent[extents.size()]); FeatureTypeConstraint constraint = sf.createFeatureTypeConstraint(featureTypeName, filter, ea); if (parent == null) { reset(); } return constraint; } public FeatureTypeConstraintBuilder reset() { unset = false; featureTypeName = null; filter = null; extents.clear(); return this; } public FeatureTypeConstraintBuilder reset(FeatureTypeConstraint constraint) { if (constraint == null) { return unset(); } featureTypeName = constraint.getFeatureTypeName(); filter = constraint.getFilter(); extents.clear(); extents.addAll(Arrays.asList(constraint.getExtents())); unset = false; return this; } public FeatureTypeConstraintBuilder unset() { return (FeatureTypeConstraintBuilder) super.unset(); } @Override protected void buildSLDInternal(StyledLayerDescriptorBuilder sb) { throw new UnsupportedOperationException("Can't build a SLD out of a feature type contraint"); } }