Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MultiIntArrayState.java @ 2705:71f072d8b3d8
Improved the MultiIntArrayState, so the clients are able to display human readable strings for parameters and its values.
flys-artifacts/trunk@4422 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 16 May 2012 10:52:12 +0000 |
parents | 1bc35de0b786 |
children | 282db12a5bdf |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MultiIntArrayState.java Wed May 16 09:18:10 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MultiIntArrayState.java Wed May 16 10:52:12 2012 +0000 @@ -10,6 +10,10 @@ import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; import de.intevation.artifacts.common.model.KVP; +import de.intevation.flys.artifacts.FLYSArtifact; +import de.intevation.flys.artifacts.resources.Resources; +import de.intevation.flys.utils.FLYSUtils; + /** * State that holds minimun and maximum (for validation). @@ -51,9 +55,50 @@ } + @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; }