Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQSelect.java @ 1743:8a2cbf947395
Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
flys-artifacts/trunk@3035 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Oct 2011 15:32:22 +0000 |
parents | 17648043429f |
children | 6762f54b23b1 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQSelect.java Wed Oct 19 15:05:47 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQSelect.java Wed Oct 19 15:32:22 2011 +0000 @@ -1,5 +1,7 @@ package de.intevation.flys.artifacts.states; +import java.text.NumberFormat; + import gnu.trove.TDoubleArrayList; import org.apache.log4j.Logger; @@ -10,6 +12,7 @@ import de.intevation.artifacts.CallContext; import de.intevation.artifacts.common.utils.XMLUtils; +import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; import de.intevation.artifactdatabase.ProtocolUtils; import de.intevation.artifactdatabase.data.StateData; @@ -18,6 +21,7 @@ import de.intevation.flys.model.River; import de.intevation.flys.model.Wst; +import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.WINFOArtifact; import de.intevation.flys.artifacts.model.WstFactory; @@ -44,6 +48,9 @@ /** The name of the 'mode' field. */ public static final String WQ_MODE = "wq_mode"; + /** Them name fo the 'free' field. */ + public static final String WQ_FREE = "wq_free"; + /** The name of the 'selection' field. */ public static final String WQ_SELECTION = "wq_selection"; @@ -66,7 +73,77 @@ public WQSelect() { } - + + @Override + protected Element createStaticData( + FLYSArtifact flys, + ElementCreator creator, + CallContext cc, + String name, + String value, + String type + ) { + if (!name.equals(WQ_SINGLE)) { + return super.createStaticData(flys, creator, cc, name, value, type); + } + + String mode = flys.getDataAsString(WQ_MODE); + String free = flys.getDataAsString(WQ_FREE); + if (mode == null || mode.equals("W") || Boolean.valueOf(free)) { + return super.createStaticData(flys, creator, cc, name, value, type); + } + + WINFOArtifact winfo = (WINFOArtifact) flys; + + Element dataElement = creator.create("data"); + creator.addAttr(dataElement, "name", name, true); + creator.addAttr(dataElement, "type", type, true); + + Element itemElement = creator.create("item"); + creator.addAttr(itemElement, "value", value, true); + creator.addAttr(itemElement, "label", getLabel(winfo, cc, value), true); + + dataElement.appendChild(itemElement); + + return dataElement; + } + + + protected static String getLabel( + WINFOArtifact winfo, + CallContext cc, + String raw + ) { + String[] values = raw.split(" "); + String label = null; + + NumberFormat nf = NumberFormat.getInstance( + Resources.getLocale(cc.getMeta())); + + for (String value: values) { + try { + double v = Double.valueOf(value.trim()); + + String tmp = nf.format(v); + String mv = FLYSUtils.getNamedMainValue(winfo.getGauge(),v); + + if (mv != null && mv.length() > 0) { + String add = mv + ": " + tmp; + label = label != null ? label + ", " + add : add; + } + else { + label = label != null ? label + ", " + tmp : tmp; + } + } + catch (NumberFormatException nfe) { + // do nothing here + } + } + + return label; + } + + @Override protected Element createData( XMLUtils.ElementCreator cr,