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

http://dive4elements.wald.intevation.org