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 :

http://dive4elements.wald.intevation.org