Mercurial > dive4elements > river
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 } |