package org.geotools.styling.builder;
import java.util.ArrayList;
import java.util.List;
import org.geotools.styling.ColorReplacement;
import org.opengis.filter.expression.Expression;
/**
*
*
* @source $URL$
*/
public class ColorReplacementBuilder extends AbstractStyleBuilder<ColorReplacement> {
private Expression propertyName;
private List<Expression> mapping = new ArrayList<Expression>();
public ColorReplacementBuilder() {
this(null);
}
public ColorReplacementBuilder(AbstractStyleBuilder<?> parent) {
super(parent);
reset();
}
public ColorReplacement build() {
if (unset) {
return null;
}
Expression array[] = mapping.toArray(new Expression[mapping.size()]);
ColorReplacement replacement = sf.colorReplacement(propertyName, array);
if (parent == null) {
reset();
}
return replacement;
}
public ColorReplacementBuilder reset() {
propertyName = property("Raster");
mapping.clear();
unset = false;
return this;
}
@Override
public ColorReplacementBuilder reset(ColorReplacement original) {
return reset((org.opengis.style.ColorReplacement) original);
}
public ColorReplacementBuilder reset(org.opengis.style.ColorReplacement replacement) {
if (replacement == null) {
return unset();
}
mapping.clear();
if (replacement.getRecoding() != null
&& replacement.getRecoding().getParameters().size() > 0) {
List<Expression> params = replacement.getRecoding().getParameters();
propertyName = params.get(0);
for (int i = 0; i < params.size(); i++) {
mapping.add(params.get(i));
}
}
unset = false;
return this;
}
public ColorReplacementBuilder unset() {
return (ColorReplacementBuilder) super.unset();
}
@Override
protected void buildStyleInternal(StyleBuilder sb) {
// TODO: build a raster style
throw new UnsupportedOperationException("Can't build a style out of a color replacement");
}
}