Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/MultiIntArrayState.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/MultiIntArrayState.java@bd047b71ab37 |
children | 4897a58c8746 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/MultiIntArrayState.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,101 @@ +package org.dive4elements.river.artifacts.states; + +import org.w3c.dom.Element; + +import org.apache.log4j.Logger; + +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallContext; + +import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; +import org.dive4elements.artifacts.common.model.KVP; + +import org.dive4elements.river.artifacts.FLYSArtifact; +import org.dive4elements.river.artifacts.resources.Resources; +import org.dive4elements.river.utils.FLYSUtils; + + +/** + * State that holds minimun and maximum (for validation). + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public abstract class MultiIntArrayState extends DefaultState { + + private static final Logger logger = + Logger.getLogger(MultiIntArrayState.class); + + + @Override + protected void appendItems( + Artifact artifact, + ElementCreator creator, + String name, + CallContext context, + Element select + ) { + try { + creator.addAttr(select, "type", "intoptions", true); + + for (KVP kvp: getOptions(artifact, name)) { + Element item = creator.create("item"); + creator.addAttr(item, "label", kvp.getValue().toString(), true); + creator.addAttr(item, "value", kvp.getKey().toString(), true); + + select.appendChild(item); + } + } + catch (IllegalArgumentException iae) { + logger.warn("Illegal argument", iae); + } + } + + + @Override + protected Element createStaticData( + FLYSArtifact flys, + ElementCreator creator, + CallContext cc, + String name, + String value, + String type + ) { + Element data = creator.create("data"); + creator.addAttr(data, "name", name, true); + creator.addAttr(data, "type", type, true); + creator.addAttr(data, "label", + Resources.getMsg(cc.getMeta(), name, name), true); + + int[] values = FLYSUtils.intArrayFromString(value); + + for (int val: values) { + try { + Element item = creator.create("item"); + creator.addAttr(item, "value", String.valueOf(val), true); + creator.addAttr(item, "label", getLabelFor(cc, name, val), true); + + data.appendChild(item); + } + catch (IllegalArgumentException iae) { + logger.warn("Cannot append item: " + val, iae); + } + } + + return data; + } + + + protected abstract KVP<Integer, String>[] getOptions( + Artifact artifact, + String parameterName + ) + throws IllegalArgumentException; + + + protected abstract String getLabelFor( + CallContext cc, + String parameterName, + int value) + throws IllegalArgumentException; +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :