Mercurial > dive4elements > river
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, |