Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WaterlevelPairSelectState.java @ 1663:4fbd43061315
Show proper labels for selected differences.
flys-artifacts/trunk@2866 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 30 Sep 2011 05:31:34 +0000 |
parents | 238145ef67da |
children | fc9719cddbc6 |
comparison
equal
deleted
inserted
replaced
1662:a800994aed1e | 1663:4fbd43061315 |
---|---|
2 | 2 |
3 import java.util.List; | 3 import java.util.List; |
4 | 4 |
5 import org.apache.log4j.Logger; | 5 import org.apache.log4j.Logger; |
6 | 6 |
7 import org.w3c.dom.Element; | |
8 | |
7 import de.intevation.artifacts.CallContext; | 9 import de.intevation.artifacts.CallContext; |
8 | 10 |
11 import de.intevation.artifactdatabase.data.DefaultStateData; | |
12 import de.intevation.artifactdatabase.data.StateData; | |
9 import de.intevation.artifactdatabase.state.Facet; | 13 import de.intevation.artifactdatabase.state.Facet; |
10 | 14 |
15 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; | |
16 | |
11 import de.intevation.flys.artifacts.FLYSArtifact; | 17 import de.intevation.flys.artifacts.FLYSArtifact; |
18 import de.intevation.flys.artifacts.model.CalculationResult; | |
19 import de.intevation.flys.artifacts.model.FacetTypes; | |
20 import de.intevation.flys.artifacts.model.WQKms; | |
21 import de.intevation.flys.artifacts.resources.Resources; | |
12 | 22 |
13 import de.intevation.flys.artifacts.model.FacetTypes; | 23 import de.intevation.flys.utils.FLYSUtils; |
24 import de.intevation.flys.utils.StringUtil; | |
25 | |
14 | 26 |
15 | 27 |
16 public class WaterlevelPairSelectState | 28 public class WaterlevelPairSelectState |
17 extends DefaultState | 29 extends DefaultState |
18 implements FacetTypes | 30 implements FacetTypes |
19 { | 31 { |
20 /** The logger that is used in this state. */ | 32 /** The logger that is used in this state. */ |
21 private static Logger logger = Logger.getLogger(WaterlevelPairSelectState.class); | 33 private static Logger logger = Logger.getLogger(WaterlevelPairSelectState.class); |
34 | |
35 | |
36 // TODO fix (state.winfo.waterlevel) | |
37 // own id is state.winfo.waterlevel_pair_select | |
38 public static final String WINFO_WDIFFERENCES_STATE_ID | |
39 = "state.winfo.w_differences"; | |
22 | 40 |
23 public WaterlevelPairSelectState() { | 41 public WaterlevelPairSelectState() { |
24 } | 42 } |
25 | 43 |
26 | 44 |
40 Object old | 58 Object old |
41 ) { | 59 ) { |
42 //Get data and do stuff, do not calculate | 60 //Get data and do stuff, do not calculate |
43 return ""; | 61 return ""; |
44 } | 62 } |
63 | |
64 | |
65 /** | |
66 * Creats the data element used for the static part of DESCRIBE document. | |
67 */ | |
68 @Override | |
69 protected Element createStaticData( | |
70 ElementCreator creator, | |
71 CallContext cc, | |
72 String name, | |
73 String value, | |
74 String type | |
75 ) { | |
76 Element dataElement = creator.create("data"); | |
77 creator.addAttr(dataElement, "name", name, true); | |
78 creator.addAttr(dataElement, "type", type, true); | |
79 | |
80 Element itemElement = creator.create("item"); | |
81 creator.addAttr(itemElement, "value", value, true); | |
82 | |
83 String[] labels = getLabels(cc, value); | |
84 Object[] obj = new Object[] { labels[0] }; | |
85 | |
86 // TODO own i18n | |
87 String attrValue = Resources.getMsg( | |
88 cc.getMeta(), "wsp.selected.string", "wsp.selected.string", obj); | |
89 //I18N_STATIC_KEY, I18N_STATIC_KEY, obj); | |
90 | |
91 creator.addAttr(itemElement, "label", attrValue, true); | |
92 dataElement.appendChild(itemElement); | |
93 | |
94 return dataElement; | |
95 } | |
96 | |
97 | |
98 // TODO merge implementations with WaterlevelSelectState | |
99 /** | |
100 * Get name to display for selected watelerlevels (for example "Q=123") | |
101 * from the CalculationResult. | |
102 */ | |
103 public static String[] getLabels(CallContext cc, String value) { | |
104 String[] recommendations = value.split("#"); | |
105 String displayString = ""; | |
106 | |
107 // Walk over all selected recommendations and create label | |
108 // like "W (Q=1) - W (Q=2)". | |
109 for (int i = 0; i < recommendations.length; i+=2) { | |
110 String[] minuendParts = StringUtil | |
111 .unbracket(recommendations[i+0]) | |
112 .split(";"); | |
113 String[] subtrahendParts = StringUtil | |
114 .unbracket(recommendations[i+1]) | |
115 .split(";"); | |
116 | |
117 | |
118 FLYSArtifact artifact1 = FLYSUtils.getArtifact(minuendParts[0], cc); | |
119 | |
120 CalculationResult rawData1 = (CalculationResult) artifact1.compute( | |
121 cc, | |
122 null, | |
123 "state.winfo.waterlevel", | |
124 ComputeType.ADVANCE, | |
125 false); | |
126 WQKms[] wqkms1 = (WQKms[]) rawData1.getData(); | |
127 | |
128 int idx1 = -1; | |
129 try { | |
130 idx1 = Integer.parseInt(minuendParts[2]); | |
131 } | |
132 catch (NumberFormatException nfe) { /* do nothing */ } | |
133 | |
134 FLYSArtifact artifact2 = FLYSUtils.getArtifact(subtrahendParts[0], cc); | |
135 | |
136 CalculationResult rawData2 = (CalculationResult) artifact2.compute( | |
137 cc, | |
138 null, | |
139 "state.winfo.waterlevel", | |
140 ComputeType.ADVANCE, | |
141 false); | |
142 WQKms[] wqkms2 = (WQKms[]) rawData2.getData(); | |
143 | |
144 int idx2 = -1; | |
145 try { | |
146 idx2 = Integer.parseInt(subtrahendParts[2]); | |
147 } | |
148 catch (NumberFormatException nfe) { /* do nothing */ } | |
149 | |
150 displayString += "(" + StringUtil.wWrap(wqkms1[idx1].getName()) | |
151 + " - " + StringUtil.wWrap(wqkms2[idx2].getName()) + ")"; | |
152 } | |
153 | |
154 return new String[] { displayString }; | |
155 } | |
156 | |
45 } | 157 } |
46 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 158 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |