Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/process/DischargeProcessor.java @ 8436:17c3aaa17112
More cleanup in discharge data processing.
author | "Tom Gottfried <tom@intevation.de>" |
---|---|
date | Mon, 20 Oct 2014 13:52:15 +0200 |
parents | 0fa963038c61 |
children | 5e38e2924c07 |
comparison
equal
deleted
inserted
replaced
8435:6ebad936d82b | 8436:17c3aaa17112 |
---|---|
21 import org.dive4elements.river.artifacts.model.WQKms; | 21 import org.dive4elements.river.artifacts.model.WQKms; |
22 import org.dive4elements.river.artifacts.resources.Resources; | 22 import org.dive4elements.river.artifacts.resources.Resources; |
23 import org.dive4elements.river.exports.DiagramGenerator; | 23 import org.dive4elements.river.exports.DiagramGenerator; |
24 import org.dive4elements.river.exports.StyledSeriesBuilder; | 24 import org.dive4elements.river.exports.StyledSeriesBuilder; |
25 import org.dive4elements.river.jfree.StyledXYSeries; | 25 import org.dive4elements.river.jfree.StyledXYSeries; |
26 import org.dive4elements.river.model.Gauge; | |
27 import org.dive4elements.river.model.River; | |
28 import org.dive4elements.river.themes.ThemeDocument; | 26 import org.dive4elements.river.themes.ThemeDocument; |
29 | 27 |
30 | 28 |
31 /** Helper for data handling in discharge diagrams. */ | 29 /** Helper for data handling in discharge diagrams. */ |
32 public class DischargeProcessor | 30 public class DischargeProcessor |
35 private final static Logger log = | 33 private final static Logger log = |
36 Logger.getLogger(DischargeProcessor.class); | 34 Logger.getLogger(DischargeProcessor.class); |
37 | 35 |
38 /** Station for which the diagram is shown. */ | 36 /** Station for which the diagram is shown. */ |
39 private double km; | 37 private double km; |
40 | |
41 /** Tolerance for comparison of kilometers. */ | |
42 public static final double KM_EPSILON = 0.001d; | |
43 | 38 |
44 private String yAxisLabel = ""; | 39 private String yAxisLabel = ""; |
45 | 40 |
46 private String I18N_AXIS_LABEL = "chart.discharge.curve.yaxis.label"; | 41 private String I18N_AXIS_LABEL = "chart.discharge.curve.yaxis.label"; |
47 | 42 |
69 Object data = bundle.getData(context); | 64 Object data = bundle.getData(context); |
70 if (data instanceof WQKms) { | 65 if (data instanceof WQKms) { |
71 doDischargeOut( | 66 doDischargeOut( |
72 generator, | 67 generator, |
73 bundle, | 68 bundle, |
74 bundle.getFacetDescription().trim(), | |
75 theme, | 69 theme, |
76 visible); | 70 visible); |
77 } | 71 } |
78 else { | 72 else { |
79 log.error("Can't process " | 73 log.error("Can't process " |
84 | 78 |
85 /** True if this processor knows how to deal with facetType. */ | 79 /** True if this processor knows how to deal with facetType. */ |
86 @Override | 80 @Override |
87 public boolean canHandle(String facetType) { | 81 public boolean canHandle(String facetType) { |
88 return DISCHARGE_CURVE.equals(facetType) | 82 return DISCHARGE_CURVE.equals(facetType) |
89 || GAUGE_DISCHARGE_CURVE.equals(facetType); | 83 || GAUGE_DISCHARGE_CURVE.equals(facetType) |
84 || COMPUTED_DISCHARGE_Q.equals(facetType); | |
90 } | 85 } |
91 | 86 |
92 | 87 |
93 /** The station of the current calculation/view. */ | 88 /** The station of the current calculation/view. */ |
94 protected double getKm() { | 89 protected double getKm() { |
99 * Add series with discharge curve to diagram. | 94 * Add series with discharge curve to diagram. |
100 */ | 95 */ |
101 protected void doDischargeOut( | 96 protected void doDischargeOut( |
102 DiagramGenerator generator, | 97 DiagramGenerator generator, |
103 ArtifactAndFacet bundle, | 98 ArtifactAndFacet bundle, |
104 String name, | |
105 ThemeDocument theme, | 99 ThemeDocument theme, |
106 boolean visible) | 100 boolean visible |
107 { | 101 ) { |
108 log.debug("DischargeCurveGenerator.doDischargeOut"); | |
109 CallContext context = generator.getCallContext(); | 102 CallContext context = generator.getCallContext(); |
110 Map<String, String> metaData = bundle.getFacet().getMetaData( | 103 Map<String, String> metaData = bundle.getFacet().getMetaData( |
111 bundle.getArtifact(), context); | 104 bundle.getArtifact(), context); |
112 WQKms data = (WQKms)bundle.getData(context); | 105 WQKms data = (WQKms)bundle.getData(context); |
113 Double skm = data.sameKm(); | 106 Double skm = data.sameKm(); |
114 if (skm != null && Math.abs(skm-km) > 0.00001) { | 107 if (skm != null && Math.abs(skm-km) > 0.00001) { |
115 return; | 108 return; |
116 } | 109 } |
117 StyledXYSeries series = new StyledXYSeries(name, theme); | 110 StyledXYSeries series = new StyledXYSeries( |
111 bundle.getFacetDescription().trim(), theme); | |
118 double[][] wqData = new double[2][data.size()]; | 112 double[][] wqData = new double[2][data.size()]; |
119 for (int i = 0, n = data.size(); i < n; i++) { | 113 for (int i = 0, n = data.size(); i < n; i++) { |
120 wqData[0][i] = data.getQ(i); | 114 wqData[0][i] = data.getQ(i); |
121 wqData[1][i] = data.getW(i); | 115 wqData[1][i] = data.getW(i); |
122 } | 116 } |
123 StyledSeriesBuilder.addPoints(series, wqData, false); | 117 StyledSeriesBuilder.addPoints(series, wqData, false); |
124 | 118 |
125 series.putMetaData(metaData, bundle.getArtifact(), context); | 119 series.putMetaData(metaData, bundle.getArtifact(), context); |
126 yAxisLabel = metaData.get("Y"); | 120 yAxisLabel = metaData.get("Y"); |
127 | |
128 String gaugeName = data.getName(); | |
129 RiverAccess access = new RiverAccess((D4EArtifact)bundle.getArtifact()); | |
130 River river = access.getRiver(); | |
131 | |
132 if (river == null) { | |
133 log.debug("no river found"); | |
134 return; | |
135 } | |
136 | |
137 Gauge gauge = river.determineGaugeByName(gaugeName); | |
138 | |
139 if (gauge == null) { | |
140 log.debug("no gauge found"); | |
141 return; | |
142 } | |
143 generator.addAxisSeries(series, axisName, visible); | 121 generator.addAxisSeries(series, axisName, visible); |
144 } | 122 } |
145 | 123 |
146 @Override | 124 @Override |
147 public String getAxisLabel(DiagramGenerator generator) { | 125 public String getAxisLabel(DiagramGenerator generator) { |