package org.mapfish.print.processor.map;
import org.mapfish.print.attribute.map.GenericMapAttribute.GenericMapAttributeValues;
import org.mapfish.print.attribute.map.MapLayer;
import org.mapfish.print.config.Configuration;
import org.mapfish.print.config.ConfigurationException;
import org.mapfish.print.map.image.wms.WmsLayer;
import org.mapfish.print.map.tiled.wms.TiledWmsLayer;
import org.mapfish.print.processor.AbstractProcessor;
import org.mapfish.print.processor.InputOutputValue;
import java.util.List;
/**
* <p>Processor to set a param on WMS layers.</p>
*/
public class SetWmsCustomParamProcessor extends AbstractProcessor<SetWmsCustomParamProcessor.Input, Void> {
/**
* The parameter name.
*/
private String paramName;
/**
* Constructor.
*/
protected SetWmsCustomParamProcessor() {
super(Void.class);
}
@Override
public final Input createInputParameter() {
return new Input();
}
@Override
public final Void execute(final Input values, final ExecutionContext context) throws Exception {
for (MapLayer layer : values.map.getLayers()) {
checkCancelState(context);
if (layer instanceof WmsLayer) {
((WmsLayer) layer).getParams().setCustomParam(this.paramName, values.value);
} else if (layer instanceof TiledWmsLayer) {
((TiledWmsLayer) layer).getParams().setCustomParam(this.paramName, values.value);
}
}
return null;
}
@Override
protected final void extraValidation(final List<Throwable> validationErrors, final Configuration configuration) {
if (this.paramName == null) {
validationErrors.add(new ConfigurationException("No paramName defined in " + getClass().getName()));
}
}
/**
* The input parameter object for {@link SetFeaturesProcessor}.
*/
public static final class Input {
/**
* The map to update.
*/
@InputOutputValue
public GenericMapAttributeValues map;
/**
* The value.
*/
public String value;
}
/**
* Set the parameter name.
* @param paramName the parameter name
*/
public final void setParamName(final String paramName) {
this.paramName = paramName;
}
}