comparison 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
comparison
equal deleted inserted replaced
1742:809acad6a320 1743:8a2cbf947395
1 package de.intevation.flys.artifacts.states; 1 package de.intevation.flys.artifacts.states;
2
3 import java.text.NumberFormat;
2 4
3 import gnu.trove.TDoubleArrayList; 5 import gnu.trove.TDoubleArrayList;
4 6
5 import org.apache.log4j.Logger; 7 import org.apache.log4j.Logger;
6 8
8 10
9 import de.intevation.artifacts.Artifact; 11 import de.intevation.artifacts.Artifact;
10 import de.intevation.artifacts.CallContext; 12 import de.intevation.artifacts.CallContext;
11 13
12 import de.intevation.artifacts.common.utils.XMLUtils; 14 import de.intevation.artifacts.common.utils.XMLUtils;
15 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
13 16
14 import de.intevation.artifactdatabase.ProtocolUtils; 17 import de.intevation.artifactdatabase.ProtocolUtils;
15 import de.intevation.artifactdatabase.data.StateData; 18 import de.intevation.artifactdatabase.data.StateData;
16 19
17 import de.intevation.flys.model.Gauge; 20 import de.intevation.flys.model.Gauge;
18 import de.intevation.flys.model.River; 21 import de.intevation.flys.model.River;
19 import de.intevation.flys.model.Wst; 22 import de.intevation.flys.model.Wst;
20 23
24 import de.intevation.flys.artifacts.FLYSArtifact;
21 import de.intevation.flys.artifacts.WINFOArtifact; 25 import de.intevation.flys.artifacts.WINFOArtifact;
22 26
23 import de.intevation.flys.artifacts.model.WstFactory; 27 import de.intevation.flys.artifacts.model.WstFactory;
24 import de.intevation.flys.artifacts.resources.Resources; 28 import de.intevation.flys.artifacts.resources.Resources;
25 29
42 public static final String DEFAULT_STEP_W = "30"; 46 public static final String DEFAULT_STEP_W = "30";
43 47
44 /** The name of the 'mode' field. */ 48 /** The name of the 'mode' field. */
45 public static final String WQ_MODE = "wq_mode"; 49 public static final String WQ_MODE = "wq_mode";
46 50
51 /** Them name fo the 'free' field. */
52 public static final String WQ_FREE = "wq_free";
53
47 /** The name of the 'selection' field. */ 54 /** The name of the 'selection' field. */
48 public static final String WQ_SELECTION = "wq_selection"; 55 public static final String WQ_SELECTION = "wq_selection";
49 56
50 /** The name of the 'from' field. */ 57 /** The name of the 'from' field. */
51 public static final String WQ_FROM = "wq_from"; 58 public static final String WQ_FROM = "wq_from";
64 * The default constructor that initializes an empty State object. 71 * The default constructor that initializes an empty State object.
65 */ 72 */
66 public WQSelect() { 73 public WQSelect() {
67 } 74 }
68 75
69 76
77 @Override
78 protected Element createStaticData(
79 FLYSArtifact flys,
80 ElementCreator creator,
81 CallContext cc,
82 String name,
83 String value,
84 String type
85 ) {
86 if (!name.equals(WQ_SINGLE)) {
87 return super.createStaticData(flys, creator, cc, name, value, type);
88 }
89
90 String mode = flys.getDataAsString(WQ_MODE);
91 String free = flys.getDataAsString(WQ_FREE);
92 if (mode == null || mode.equals("W") || Boolean.valueOf(free)) {
93 return super.createStaticData(flys, creator, cc, name, value, type);
94 }
95
96 WINFOArtifact winfo = (WINFOArtifact) flys;
97
98 Element dataElement = creator.create("data");
99 creator.addAttr(dataElement, "name", name, true);
100 creator.addAttr(dataElement, "type", type, true);
101
102 Element itemElement = creator.create("item");
103 creator.addAttr(itemElement, "value", value, true);
104 creator.addAttr(itemElement, "label", getLabel(winfo, cc, value), true);
105
106 dataElement.appendChild(itemElement);
107
108 return dataElement;
109 }
110
111
112 protected static String getLabel(
113 WINFOArtifact winfo,
114 CallContext cc,
115 String raw
116 ) {
117 String[] values = raw.split(" ");
118 String label = null;
119
120 NumberFormat nf = NumberFormat.getInstance(
121 Resources.getLocale(cc.getMeta()));
122
123 for (String value: values) {
124 try {
125 double v = Double.valueOf(value.trim());
126
127 String tmp = nf.format(v);
128 String mv = FLYSUtils.getNamedMainValue(winfo.getGauge(),v);
129
130 if (mv != null && mv.length() > 0) {
131 String add = mv + ": " + tmp;
132 label = label != null ? label + ", " + add : add;
133 }
134 else {
135 label = label != null ? label + ", " + tmp : tmp;
136 }
137 }
138 catch (NumberFormatException nfe) {
139 // do nothing here
140 }
141 }
142
143 return label;
144 }
145
146
70 @Override 147 @Override
71 protected Element createData( 148 protected Element createData(
72 XMLUtils.ElementCreator cr, 149 XMLUtils.ElementCreator cr,
73 Artifact artifact, 150 Artifact artifact,
74 StateData data, 151 StateData data,

http://dive4elements.wald.intevation.org