Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/process/DischargeProcessor.java @ 6922:6fb355b87f50
DischargeProcessor: Handle interpolated w values
which are added as StickyAxisAnnotations.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Mon, 26 Aug 2013 15:28:46 +0200 |
parents | 695a5f6599b4 |
children | f9d5020af0af |
comparison
equal
deleted
inserted
replaced
6921:6f8ce2ec40bd | 6922:6fb355b87f50 |
---|---|
20 import org.dive4elements.river.artifacts.model.WQKms; | 20 import org.dive4elements.river.artifacts.model.WQKms; |
21 import org.dive4elements.river.exports.DischargeCurveGenerator; | 21 import org.dive4elements.river.exports.DischargeCurveGenerator; |
22 import org.dive4elements.river.exports.XYChartGenerator; | 22 import org.dive4elements.river.exports.XYChartGenerator; |
23 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; | 23 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; |
24 import org.dive4elements.river.jfree.RiverAnnotation; | 24 import org.dive4elements.river.jfree.RiverAnnotation; |
25 import org.dive4elements.river.jfree.StickyAxisAnnotation; | |
25 import org.dive4elements.river.jfree.StyledXYSeries; | 26 import org.dive4elements.river.jfree.StyledXYSeries; |
26 import org.dive4elements.river.themes.ThemeDocument; | 27 import org.dive4elements.river.themes.ThemeDocument; |
27 | 28 |
28 import org.jfree.chart.annotations.XYTextAnnotation; | 29 import org.jfree.chart.annotations.XYTextAnnotation; |
29 | 30 |
72 else if (data instanceof RiverAnnotation) { | 73 else if (data instanceof RiverAnnotation) { |
73 doRiverAnnotationOut( | 74 doRiverAnnotationOut( |
74 generator, (RiverAnnotation) data, aandf, theme, visible); | 75 generator, (RiverAnnotation) data, aandf, theme, visible); |
75 return; | 76 return; |
76 } | 77 } |
77 logger.error("Can't process " + data.getClass().getName() + " objects"); | 78 else if (data instanceof double[][]) { |
79 doMarksOut( | |
80 generator, (double[][]) data, aandf, theme, visible); | |
81 return; | |
82 } | |
83 else { | |
84 logger.error("Can't process " | |
85 + data.getClass().getName() + " objects of facet " | |
86 + aandf.getFacetName()); | |
87 } | |
78 } | 88 } |
79 | 89 |
80 | 90 |
81 /** True if this processor knows how to deal with facetType. */ | 91 /** True if this processor knows how to deal with facetType. */ |
82 @Override | 92 @Override |
83 public boolean canHandle(String facetType) { | 93 public boolean canHandle(String facetType) { |
84 return /*STATIC_WQKMS_W.equals(facetType) | 94 return /*STATIC_WQKMS_W.equals(facetType) |
85 ||*/ COMPUTED_DISCHARGE_MAINVALUES_Q.equals(facetType) | 95 ||*/ COMPUTED_DISCHARGE_MAINVALUES_Q.equals(facetType) |
86 || MAINVALUES_Q.equals(facetType) | 96 || MAINVALUES_Q.equals(facetType) |
87 || COMPUTED_DISCHARGE_MAINVALUES_W.equals(facetType) | 97 || COMPUTED_DISCHARGE_MAINVALUES_W.equals(facetType) |
88 || MAINVALUES_W.equals(facetType); | 98 || MAINVALUES_W.equals(facetType) |
99 || STATIC_W_INTERPOL.equals(facetType); | |
89 } | 100 } |
90 | 101 |
91 | 102 |
92 /** The station of the current calculation/view. */ | 103 /** The station of the current calculation/view. */ |
93 protected double getKm() { | 104 protected double getKm() { |
131 } | 142 } |
132 } | 143 } |
133 | 144 |
134 logger.warn("No WQ found for km " + getKm()); | 145 logger.warn("No WQ found for km " + getKm()); |
135 } | 146 } |
147 | |
148 protected void doRiverAnnotationOut(XYChartGenerator generator, | |
149 RiverAnnotation annotations, | |
150 ArtifactAndFacet aandf, | |
151 ThemeDocument theme, | |
152 boolean visible | |
153 ) { | |
154 if (!(generator instanceof DischargeCurveGenerator)) { | |
155 logger.error("DischargeProcessor can only be used in " + | |
156 " in DischargeCurveGenerator-classes."); | |
157 return; | |
158 } | |
159 logger.debug("doRiverAnnotationOut"); | |
160 DischargeCurveGenerator dGenerator = | |
161 (DischargeCurveGenerator) generator; | |
162 | |
163 dGenerator.translateRiverAnnotation(annotations); | |
164 dGenerator.doAnnotations( | |
165 annotations, | |
166 aandf, theme, visible); | |
167 } | |
168 | |
169 | |
170 /** | |
171 * Put Sticky Axis Markers to Y-axis for each value. | |
172 * @param data [[-,y1],[-,y2],...] ('x'-coordinates ignored) | |
173 */ | |
174 protected void doMarksOut(XYChartGenerator generator, | |
175 double[][] data, | |
176 ArtifactAndFacet aandf, | |
177 ThemeDocument theme, | |
178 boolean visible | |
179 ) { | |
180 logger.debug("doMarksOut"); | |
181 | |
182 if (!visible) { | |
183 return; | |
184 } | |
185 | |
186 // TODO subtract gauge null point if at gauge. | |
187 String title = aandf.getFacetDescription(); | |
188 List<StickyAxisAnnotation> yMarks = new ArrayList<StickyAxisAnnotation>(); | |
189 | |
190 for (double yPos: data[1]) { | |
191 yMarks.add(new StickyAxisAnnotation( | |
192 title, | |
193 (float) yPos, | |
194 StickyAxisAnnotation.SimpleAxis.Y_AXIS)); | |
195 } | |
196 | |
197 generator.doAnnotations(new RiverAnnotation(title, yMarks), | |
198 aandf, theme, visible); | |
199 } | |
136 } | 200 } |
137 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 201 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |