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 :

http://dive4elements.wald.intevation.org