comparison flys-artifacts/src/main/java/de/intevation/flys/exports/LongitudinalSectionGenerator.java @ 696:708b270dfd30 facets-slt

OutGenerators use now facets to fetch necessary data. flys-artifacts/branches/facets-slt@2140 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 17 Jun 2011 09:19:43 +0000
parents 45cd58a2a2bb
children ddd8b37d5cd3
comparison
equal deleted inserted replaced
695:45cd58a2a2bb 696:708b270dfd30
21 21
22 import de.intevation.flys.model.River; 22 import de.intevation.flys.model.River;
23 23
24 import de.intevation.flys.artifacts.FLYSArtifact; 24 import de.intevation.flys.artifacts.FLYSArtifact;
25 import de.intevation.flys.artifacts.WINFOArtifact; 25 import de.intevation.flys.artifacts.WINFOArtifact;
26 import de.intevation.flys.artifacts.model.FacetTypes;
26 import de.intevation.flys.artifacts.model.WQKms; 27 import de.intevation.flys.artifacts.model.WQKms;
27 28
28 29
29 /** 30 /**
30 * An OutGenerator that generates discharge curves. 31 * An OutGenerator that generates discharge curves.
31 * 32 *
32 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 33 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
33 */ 34 */
34 public class LongitudinalSectionGenerator extends XYChartGenerator { 35 public class LongitudinalSectionGenerator
35 36 extends XYChartGenerator
37 implements FacetTypes
38 {
36 /** The logger that is used in this generator.*/ 39 /** The logger that is used in this generator.*/
37 private static Logger logger = 40 private static Logger logger =
38 Logger.getLogger(LongitudinalSectionGenerator.class); 41 Logger.getLogger(LongitudinalSectionGenerator.class);
39 42
40 43
189 if (name == null) { 192 if (name == null) {
190 logger.error("No facet name for doOut(). No output generated!"); 193 logger.error("No facet name for doOut(). No output generated!");
191 return; 194 return;
192 } 195 }
193 196
194 if (name.equals(LONGITUDINAL_SECTION_W)) { 197 FLYSArtifact flys = (FLYSArtifact) artifact;
195 doWOut(getWaterlevelData(artifact)); 198 Facet f = flys.getNativeFacet(facet);
196 } 199
197 else if (name.equals(LONGITUDINAL_SECTION_Q)) { 200 if (f == null) {
198 doQOut(getWaterlevelData(artifact)); 201 return;
202 }
203
204 if (name.equals(LONGITUDINAL_W)) {
205 doWOut((WQKms) f.getData(artifact, context));
206 }
207 else if (name.equals(LONGITUDINAL_Q)) {
208 doQOut((WQKms) f.getData(artifact, context));
199 } 209 }
200 else { 210 else {
201 logger.warn("Unknown facet name: " + name); 211 logger.warn("Unknown facet name: " + name);
202 return; 212 return;
203 } 213 }
224 /** 234 /**
225 * Process the output for W facets in a longitudinal section curve. 235 * Process the output for W facets in a longitudinal section curve.
226 * 236 *
227 * @param wqkms An array of WQKms values. 237 * @param wqkms An array of WQKms values.
228 */ 238 */
229 protected void doWOut(WQKms[] wqkms) { 239 protected void doWOut(WQKms wqkms) {
230 logger.debug("LongitudinalSectionGenerator.doWOut"); 240 logger.debug("LongitudinalSectionGenerator.doWOut");
231 241
232 int idx = 0; 242 XYSeries series = new XYSeries(getSeriesName(wqkms, "W"));
233 for (WQKms tmp: wqkms) { 243
234 XYSeries series = new XYSeries(getSeriesName(tmp, "W")); 244 double[] target = new double[3];
235 245 int size = wqkms.size();
236 double[] target = new double[3]; 246
237 int size = tmp.size(); 247 if (logger.isDebugEnabled()) {
238 248 if (wqkms.size() > 0) {
239 if (logger.isDebugEnabled()) { 249 logger.debug("Generate series: " + series.getKey());
240 if (tmp.size() > 0) { 250 logger.debug("Start km: " + wqkms.getKms(0));
241 logger.debug("Generate series: " + series.getKey()); 251 logger.debug("End km: " + wqkms.getKms(size-1));
242 logger.debug("Start km: " + tmp.getKms(0)); 252 logger.debug("Values : " + size);
243 logger.debug("End km: " + tmp.getKms(size-1));
244 logger.debug("Values : " + size);
245 }
246 } 253 }
247 254 }
248 for (int i = 0; i < size; i++) { 255
249 target = tmp.get(i, target); 256 for (int i = 0; i < size; i++) {
250 257 target = wqkms.get(i, target);
251 series.add(target[2], target[0]); 258
252 } 259 series.add(target[2], target[0]);
253 260 }
254 w.addSeries(series); 261
255 } 262 w.addSeries(series);
256 } 263 }
257 264
258 265
259 /** 266 /**
260 * Process the output for Q facets in a longitudinal section curve. 267 * Process the output for Q facets in a longitudinal section curve.
261 * 268 *
262 * @param wqkms An array of WQKms values. 269 * @param wqkms An array of WQKms values.
263 */ 270 */
264 protected void doQOut(WQKms[] wqkms) { 271 protected void doQOut(WQKms wqkms) {
265 logger.debug("LongitudinalSectionGenerator.doQOut"); 272 logger.debug("LongitudinalSectionGenerator.doQOut");
266 273
267 int idx = 0; 274 XYSeries series = new XYSeries(getSeriesName(wqkms, "Q"));
268 for (WQKms tmp: wqkms) { 275
269 XYSeries series = new XYSeries(getSeriesName(tmp, "Q")); 276 double[] target = new double[3];
270 277 int size = wqkms.size();
271 double[] target = new double[3]; 278
272 int size = tmp.size(); 279 if (logger.isDebugEnabled()) {
273 280 if (wqkms.size() > 0) {
274 if (logger.isDebugEnabled()) { 281 logger.debug("Generate series: " + series.getKey());
275 if (tmp.size() > 0) { 282 logger.debug("Start km: " + wqkms.getKms(0));
276 logger.debug("Generate series: " + series.getKey()); 283 logger.debug("End km: " + wqkms.getKms(size-1));
277 logger.debug("Start km: " + tmp.getKms(0)); 284 logger.debug("Values : " + size);
278 logger.debug("End km: " + tmp.getKms(size-1));
279 logger.debug("Values : " + size);
280 }
281 } 285 }
282 286 }
283 for (int i = 0; i < size; i++) { 287
284 target = tmp.get(i, target); 288 for (int i = 0; i < size; i++) {
285 289 target = wqkms.get(i, target);
286 //logger.debug("++ Q Tuple: " + target[2] + " -> " + target[1]); 290
287 series.add(target[2], target[1]); 291 //logger.debug("++ Q Tuple: " + target[2] + " -> " + target[1]);
288 } 292 series.add(target[2], target[1]);
289 293 }
290 q.addSeries(series); 294
291 } 295 q.addSeries(series);
292 } 296 }
293 297
294 298
295 protected String getSeriesName(WQKms wqkms, String mode) { 299 protected String getSeriesName(WQKms wqkms, String mode) {
296 String name = wqkms.getName(); 300 String name = wqkms.getName();

http://dive4elements.wald.intevation.org