ingo@2696: package de.intevation.flys.artifacts.states;
ingo@2696:
ingo@2696: import org.w3c.dom.Element;
ingo@2696:
ingo@2696: import org.apache.log4j.Logger;
ingo@2696:
ingo@2696: import de.intevation.artifacts.Artifact;
ingo@2696: import de.intevation.artifacts.CallContext;
ingo@2696:
ingo@2696: import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
ingo@2696: import de.intevation.artifacts.common.model.KVP;
ingo@2696:
ingo@2696:
ingo@2696: /**
ingo@2696: * State that holds minimun and maximum (for validation).
ingo@2696: *
ingo@2696: * @author Ingo Weinzierl
ingo@2696: */
ingo@2696: public abstract class MultiIntArrayState extends DefaultState {
ingo@2696:
ingo@2696: private static final Logger logger =
ingo@2696: Logger.getLogger(MultiIntArrayState.class);
ingo@2696:
ingo@2696:
ingo@2696: @Override
ingo@2696: protected void appendItems(
ingo@2696: Artifact artifact,
ingo@2696: ElementCreator creator,
ingo@2696: String name,
ingo@2696: CallContext context,
ingo@2696: Element select
ingo@2696: ) {
ingo@2696: try {
ingo@2696: creator.addAttr(select, "type", "intoptions", true);
ingo@2696:
ingo@2696: Element choices = creator.create("choices");
ingo@2696:
ingo@2696: for (KVP kvp: getOptions(artifact, name)) {
ingo@2696: Element item = creator.create("item");
ingo@2696: creator.addAttr(item, "label", kvp.getValue().toString(), true);
ingo@2696: item.setTextContent(kvp.getKey().toString());
ingo@2696:
ingo@2696: choices.appendChild(item);
ingo@2696: }
ingo@2696:
ingo@2696: select.appendChild(choices);
ingo@2696: }
ingo@2696: catch (IllegalArgumentException iae) {
ingo@2696: logger.warn("Illegal argument", iae);
ingo@2696: }
ingo@2696: }
ingo@2696:
ingo@2696:
ingo@2696: protected abstract KVP[] getOptions(
ingo@2696: Artifact artifact,
ingo@2696: String parameterName
ingo@2696: )
ingo@2696: throws IllegalArgumentException;
ingo@2696: }