comparison artifacts/src/main/java/org/dive4elements/river/exports/process/HistoricalDischargeProcessor.java @ 8188:407c9598352f

Use processors for historical discharge curves.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 04 Sep 2014 15:26:55 +0200
parents
children e4606eae8ea5
comparison
equal deleted inserted replaced
8183:baa7df019df3 8188:407c9598352f
1 package org.dive4elements.river.exports.process;
2
3 import org.apache.log4j.Logger;
4 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
5 import org.dive4elements.artifacts.CallContext;
6 import org.dive4elements.river.artifacts.model.FacetTypes;
7 import org.dive4elements.river.artifacts.model.WQKms;
8 import org.dive4elements.river.exports.DiagramGenerator;
9 import org.dive4elements.river.exports.StyledSeriesBuilder;
10 import org.dive4elements.river.jfree.StyledXYSeries;
11 import org.dive4elements.river.themes.ThemeDocument;
12 import org.jfree.data.xy.XYSeries;
13
14
15 public class HistoricalDischargeProcessor
16 extends DefaultProcessor
17 implements FacetTypes
18 {
19
20 private final static Logger logger =
21 Logger.getLogger(HistoricalDischargeProcessor.class);
22
23 /** Station for which the diagram is shown. */
24 private double km;
25
26 /** Tolerance for comparison of kilometers. */
27 public static final double KM_EPSILON = 0.001d;
28
29
30 /** This processor needs to be constructed with a given km. */
31 public HistoricalDischargeProcessor() {
32 km = Double.NaN;
33 }
34
35
36 public HistoricalDischargeProcessor(double km) {
37 this.km = km;
38 }
39
40
41 /** Process data, add it to plot. */
42 @Override
43 public void doOut(
44 DiagramGenerator generator,
45 ArtifactAndFacet bundle,
46 ThemeDocument theme,
47 boolean visible
48 ) {
49 logger.debug("do out: " + bundle.getFacetName());
50 CallContext context = generator.getCallContext();
51 Object data = bundle.getData(context);
52 if (data instanceof WQKms) {
53 doDischargeOut(generator, bundle, theme, visible);
54 }
55 }
56
57 /** True if this processor knows how to deal with facetType. */
58 @Override
59 public boolean canHandle(String facetType) {
60 return HISTORICAL_DISCHARGE_WQ_CURVE.equals(facetType);
61 }
62
63
64 /** The station of the current calculation/view. */
65 protected double getKm() {
66 return km;
67 }
68
69 /**
70 * Add series with discharge curve to diagram.
71 */
72 protected void doDischargeOut(
73 DiagramGenerator generator,
74 ArtifactAndFacet bundle,
75 ThemeDocument theme,
76 boolean visible
77 ) {
78 CallContext context = generator.getCallContext();
79 WQKms data = (WQKms)bundle.getData(context);
80 XYSeries series = new StyledXYSeries(bundle.getFacetName(), theme);
81 double[][] wqData = new double[2][data.size()];
82 for (int i = 0; i < data.size(); i++) {
83 wqData[0][i] = data.getQ(i);
84 wqData[1][i] = data.getW(i);
85 }
86 StyledSeriesBuilder.addPoints(series, wqData, false);
87
88 generator.addAxisSeries(series, axisName, visible);
89 }
90 }

http://dive4elements.wald.intevation.org