package org.geotools.styling.builder; import java.awt.Color; import org.geotools.styling.ColorMapEntry; import org.geotools.util.Converters; import org.opengis.filter.expression.Expression; /** * * * @source $URL$ */ public class ColorMapEntryBuilder extends AbstractStyleBuilder<ColorMapEntry> { String label; Expression color; Expression opacity; Expression quantity; public ColorMapEntryBuilder() { this(null); } public ColorMapEntryBuilder(AbstractStyleBuilder<?> parent) { super(parent); reset(); } public ColorMapEntryBuilder color(Expression color) { this.color = color; return this; } public ColorMapEntryBuilder color(Color color) { return color(literal(color)); } public ColorMapEntryBuilder colorHex(String hex) { Color color = Converters.convert(hex, Color.class); if (color == null) { throw new IllegalArgumentException( "The provided expression could not be turned into a color: " + hex); } return color(color); } public ColorMapEntryBuilder color(String cqlExpression) { return color(cqlExpression(cqlExpression)); } public ColorMapEntryBuilder opacity(Expression opacity) { this.opacity = opacity; return this; } public ColorMapEntryBuilder opacity(double opacity) { return opacity(literal(opacity)); } public ColorMapEntryBuilder opacity(String cqlExpression) { return opacity(cqlExpression(cqlExpression)); } public ColorMapEntryBuilder quantity(Expression quantity) { this.quantity = quantity; return this; } public ColorMapEntryBuilder quantity(double quantity) { return quantity(literal(quantity)); } public ColorMapEntryBuilder quantity(String cqlExpression) { return quantity(cqlExpression(cqlExpression)); } @Override public ColorMapEntryBuilder reset() { label = null; color = null; opacity = literal(1.0); quantity = null; unset = false; return this; } @Override public ColorMapEntryBuilder reset(ColorMapEntry original) { if (original == null) { return unset(); } label = original.getLabel(); color = original.getColor(); opacity = original.getOpacity(); quantity = original.getQuantity(); unset = false; return this; } @Override public ColorMapEntry build() { if (unset) { return null; } ColorMapEntry entry = sf.createColorMapEntry(); entry.setLabel(label); entry.setColor(color); entry.setOpacity(opacity); entry.setQuantity(quantity); if (parent == null) { reset(); } return entry; } @Override protected void buildStyleInternal(StyleBuilder sb) { sb.featureTypeStyle().rule().raster().colorMap().entry().init(this); } @Override public ColorMapEntryBuilder unset() { return (ColorMapEntryBuilder) super.unset(); } }