comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WaterlevelState.java @ 1664:71d5abde92f2

Bugfix: #176 and #349 Create proper titles for W and Q waterlevel facets. flys-artifacts/trunk@2869 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 30 Sep 2011 08:02:21 +0000
parents fbe18ad4caff
children 0ebce697adcc
comparison
equal deleted inserted replaced
1663:4fbd43061315 1664:71d5abde92f2
1 package de.intevation.flys.artifacts.states; 1 package de.intevation.flys.artifacts.states;
2 2
3 import java.text.NumberFormat;
3 import java.util.List; 4 import java.util.List;
4 5
5 import org.apache.log4j.Logger; 6 import org.apache.log4j.Logger;
6 7
7 import de.intevation.artifacts.CallContext; 8 import de.intevation.artifacts.CallContext;
8 9
9 import de.intevation.artifactdatabase.state.Facet; 10 import de.intevation.artifactdatabase.state.Facet;
10 11
11 import de.intevation.flys.artifacts.FLYSArtifact; 12 import de.intevation.flys.artifacts.FLYSArtifact;
12 import de.intevation.flys.artifacts.WINFOArtifact; 13 import de.intevation.flys.artifacts.WINFOArtifact;
14 import de.intevation.flys.artifacts.model.DataFacet;
15 import de.intevation.flys.artifacts.model.CrossSectionFacet;
16 import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
17 import de.intevation.flys.artifacts.model.CalculationResult;
13 import de.intevation.flys.artifacts.model.FacetTypes; 18 import de.intevation.flys.artifacts.model.FacetTypes;
14 import de.intevation.flys.artifacts.model.ReportFacet; 19 import de.intevation.flys.artifacts.model.ReportFacet;
15 import de.intevation.flys.artifacts.model.WaterlevelFacet; 20 import de.intevation.flys.artifacts.model.WaterlevelFacet;
16 import de.intevation.flys.artifacts.model.WQKms; 21 import de.intevation.flys.artifacts.model.WQKms;
17 22 import de.intevation.flys.utils.Formatter;
18 import de.intevation.flys.artifacts.model.DataFacet;
19 import de.intevation.flys.artifacts.model.CrossSectionFacet;
20 import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
21 import de.intevation.flys.artifacts.model.CalculationResult;
22 23
23 24
24 public class WaterlevelState 25 public class WaterlevelState
25 extends DefaultState 26 extends DefaultState
26 implements FacetTypes 27 implements FacetTypes
35 } 36 }
36 37
37 38
38 protected Object compute( 39 protected Object compute(
39 WINFOArtifact winfo, 40 WINFOArtifact winfo,
41 CallContext cc,
40 String hash, 42 String hash,
41 List<Facet> facets, 43 List<Facet> facets,
42 Object old 44 Object old
43 ) { 45 ) {
44 String id = getID(); 46 String id = getID();
52 } 54 }
53 55
54 WQKms [] wqkms = (WQKms [])res.getData(); 56 WQKms [] wqkms = (WQKms [])res.getData();
55 57
56 for (int i = 0; i < wqkms.length; i++) { 58 for (int i = 0; i < wqkms.length; i++) {
57 String nameW = null; 59 String name = wqkms[i].getName();
58 String nameQ = null; 60 boolean isQ = winfo.isQ();
59 61
60 if (winfo.isQ()) { 62 String nameW = createWTitle(cc, name, isQ);
61 nameQ = wqkms[i].getName(); 63 String nameQ = createQTitle(cc, name, isQ);
62 nameW = "W(" + nameQ + ")";
63 }
64 else {
65 nameW = wqkms[i].getName();
66 nameQ = "Q(" + nameQ + ")";
67 }
68 64
69 logger.debug("Create facet: " + nameW); 65 logger.debug("Create facet: " + nameW);
70 logger.debug("Create facet: " + nameQ); 66 logger.debug("Create facet: " + nameQ);
71 67
72 Facet w = new WaterlevelFacet( 68 Facet w = new WaterlevelFacet(
98 facets.add(new CrossSectionWaterLineFacet("Q=" + winfo.getDataAsString("wq_single"))); 94 facets.add(new CrossSectionWaterLineFacet("Q=" + winfo.getDataAsString("wq_single")));
99 return res; 95 return res;
100 } 96 }
101 97
102 98
99 public static String createWTitle(CallContext cc, String name, boolean isQ) {
100 String[] parts = name.split("=");
101
102 NumberFormat nf = Formatter.getWaterlevelW(cc);
103
104 double v;
105
106 try {
107 v = Double.valueOf(parts[1]);
108 }
109 catch (NumberFormatException nfe) {
110 logger.warn("Cannot parse Double of: '" + parts[1] + "'");
111 return name;
112 }
113
114 String prefix = null;
115
116 if (isQ) {
117 prefix = "Q=";
118 }
119
120 return prefix == null
121 ? "W(" + nf.format(v) + ")"
122 : "W(" + prefix + nf.format(v) + ")";
123 }
124
125
126 public static String createQTitle(CallContext cc, String name, boolean isQ) {
127 String[] parts = name.split("=");
128
129 NumberFormat nf = Formatter.getWaterlevelQ(cc);
130
131 double v;
132
133 try {
134 v = Double.valueOf(parts[1]);
135 }
136 catch (NumberFormatException nfe) {
137 logger.warn("Cannot parse Double of: '" + parts[1] + "'");
138 return name;
139 }
140
141 String prefix = null;
142
143 if (!isQ) {
144 prefix = "W=";
145 }
146
147 return prefix == null
148 ? "Q(" + nf.format(v) + ")"
149 : "Q(" + prefix + nf.format(v) + ")";
150 }
151
152
103 /** 153 /**
104 * @param context Ignored. 154 * @param context Ignored.
105 */ 155 */
106 @Override 156 @Override
107 public Object computeFeed( 157 public Object computeFeed(
109 String hash, 159 String hash,
110 CallContext context, 160 CallContext context,
111 List<Facet> facets, 161 List<Facet> facets,
112 Object old 162 Object old
113 ) { 163 ) {
114 return compute((WINFOArtifact) artifact, hash, facets, old); 164 return compute((WINFOArtifact) artifact, context, hash, facets, old);
115 165
116 } 166 }
117 167
118 168
119 /** 169 /**
125 String hash, 175 String hash,
126 CallContext context, 176 CallContext context,
127 List<Facet> facets, 177 List<Facet> facets,
128 Object old 178 Object old
129 ) { 179 ) {
130 return compute((WINFOArtifact) artifact, hash, facets, old); 180 return compute((WINFOArtifact) artifact, context, hash, facets, old);
131 } 181 }
132 } 182 }
133 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : 183 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org