annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveGenerator.java @ 9595:9b39cfd39e59

Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
author mschaefer
date Tue, 05 Feb 2019 15:31:13 +0100
parents 9b8e8fc1f408
children
rev   line source
9398
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
2 * Software engineering by
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
5 *
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
9 */
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo.flood_duration;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
11
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
12 import java.awt.Font;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
13 import java.awt.geom.Point2D;
9268
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
14 import java.io.OutputStream;
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
15
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
16 import org.apache.log4j.Logger;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
17 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
18 import org.dive4elements.artifacts.CallContext;
9595
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
19 import org.dive4elements.river.artifacts.MainValuesArtifact;
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
20 import org.dive4elements.river.artifacts.model.FacetTypes;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
21 import org.dive4elements.river.artifacts.model.WQDay;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
22 import org.dive4elements.river.exports.IdentifiableNumberAxis;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
23 import org.dive4elements.river.exports.XYChartGenerator;
9268
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
24 import org.dive4elements.river.exports.fixings.FixChartGenerator;
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
25 import org.dive4elements.river.jfree.Bounds;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
26 import org.dive4elements.river.jfree.RiverAnnotation;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
27 import org.dive4elements.river.jfree.StyledXYSeries;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
28 import org.dive4elements.river.themes.ThemeDocument;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
29 import org.jfree.chart.axis.NumberAxis;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
30 import org.jfree.chart.axis.ValueAxis;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
31 import org.jfree.chart.plot.XYPlot;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
32 import org.jfree.data.Range;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
33 import org.jfree.data.xy.XYSeries;
9268
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
34 import org.w3c.dom.Document;
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
35
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
36 /**
9398
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
37 * An OutGenerator that generates flood duration curves.
929d645691ae Fixed: sinfo flood duration: no w/q problem report with unchecked wspl option
mschaefer
parents: 9376
diff changeset
38 * (based upon a copy of DurationCurveGenerator)
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
39 */
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
40 public class FloodDurationCurveGenerator extends XYChartGenerator implements FacetTypes {
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
41 public static enum YAXIS {
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
42 W(0), Q(1);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
43 public int idx;
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
44
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
45 private YAXIS(final int c) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
46 this.idx = c;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
47 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
48 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
49
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
50 /** Local log. */
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
51 private static Logger log = Logger.getLogger(FloodDurationCurveGenerator.class);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
52
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
53 private static final String I18N_CHART_TITLE = "sinfo.chart.flood_duration.curve.section.title";
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
54
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
55 private static final String I18N_CHART_SUBTITLE = "chart.duration.curve.subtitle";
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
56
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
57 private static final String I18N_XAXIS_LABEL = "sinfo.chart.flood_duration.curve.xaxis.label";
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
58
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
59 private static final String I18N_YAXIS_LABEL_W = "chart.duration.curve.yaxis.label.w";
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
60
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9268
diff changeset
61 private static final String I18N_YAXIS_LABEL_Q = "common.export.csv.header.q";
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
62
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
63 private static final String I18N_CHART_TITLE_DEFAULT = "Dauerlinie";
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
64
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
65 private static final String I18N_XAXIS_LABEL_DEFAULT = "Überflutungsdauer [d/a]";
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
66
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
67 public FloodDurationCurveGenerator() {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
68 super();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
69 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
70
9268
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
71 @Override
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
72 public void init(final String outName, final Document request, final OutputStream out, final CallContext context) {
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
73 super.init(outName, request, out, context);
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
74
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
75 FixChartGenerator.initCurrentKm(request, context);
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
76 }
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
77
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
78 /**
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
79 * Create Axis for given index.
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
80 *
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
81 * @return axis with according internationalized label.
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
82 */
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
83 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
84 protected NumberAxis createYAxis(final int index) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
85 final Font labelFont = new Font("Tahoma", Font.BOLD, 14);
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
86 final String label = getYAxisLabel(index);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
87
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
88 final NumberAxis axis = createNumberAxis(index, label);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
89 if (index == YAXIS.W.idx) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
90 axis.setAutoRangeIncludesZero(false);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
91 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
92 axis.setLabelFont(labelFont);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
93 return axis;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
94 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
95
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
96 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
97 protected String getDefaultChartTitle(final CallContext context) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
98 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
99 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
100
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
101 @Override
9268
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
102 protected String getChartSubtitle(final CallContext context) {
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
103 // REMARK: can't use getDeaultChartSubtitle, because the standard implementation of getChartSubtitle will
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
104 // always use the subtitle from the settings, which will automatically be set during init.
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
105 final double currentKm = FixChartGenerator.getCurrentKm(context);
ae9dee74e43e Fixed: current station of duration chart was not changed
gernotbelger
parents: 9265
diff changeset
106 return msg(I18N_CHART_SUBTITLE, "", getRiverName(), currentKm);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
107 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
108
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
109 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
110 protected String getDefaultXAxisLabel(final CallContext context) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
111 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
112 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
113
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
114 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
115 protected String getDefaultYAxisLabel(final int index) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
116
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
117 String label = "default";
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
118 if (index == YAXIS.W.idx) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
119 label = msg(I18N_YAXIS_LABEL_W, I18N_YAXIS_LABEL_W, getRiverUnit());
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
120 } else if (index == YAXIS.Q.idx) {
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
121 label = msg(I18N_YAXIS_LABEL_Q);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
122 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
123 return label;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
124 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
125
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
126 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
127 protected boolean zoomX(final XYPlot plot, final ValueAxis axis, final Bounds bounds, final Range x) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
128
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
129 final boolean zoomin = super.zoom(plot, axis, bounds, x);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
130 if (!zoomin)
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
131 axis.setLowerBound(0d);
9257
ef7b65576d4b Added W and Q main values to S-Info flood duration curve chart
mschaefer
parents: 9252
diff changeset
132 axis.setUpperBound(364);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
133 return zoomin;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
134 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
135
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
136 /**
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
137 * This method overrides the method in the parent class to set the lower
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
138 * bounds of the Q axis to 0. This axis should never display negative
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
139 * values on its own.
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
140 */
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
141 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
142 protected boolean zoomY(final XYPlot plot, final ValueAxis axis, final Bounds bounds, final Range x) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
143
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
144 final boolean zoomin = super.zoom(plot, axis, bounds, x);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
145 if (!zoomin && axis instanceof IdentifiableNumberAxis) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
146 final String id = ((IdentifiableNumberAxis) axis).getId();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
147 if (YAXIS.Q.toString().equals(id))
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
148 axis.setLowerBound(0d);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
149 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
150 return zoomin;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
151 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
152
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
153 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
154 public void doOut(final ArtifactAndFacet artifactFacet, final ThemeDocument attr, final boolean visible) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
155
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
156 final String name = artifactFacet.getFacetName();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
157
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
158 log.debug("FloodDurationCurveGenerator.doOut: " + name);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
159
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
160 if (name == null || name.length() == 0) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
161 log.error("No facet given. Cannot create dataset.");
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
162 return;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
163 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
164
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
165 final CallContext context = getContext();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
166
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
167 // TODO: mainvalues.q
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
168 // TODO: mainvalues.w
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
169 // } else if (name.equals(MAINVALUES_Q) || name.equals(MAINVALUES_W)) {
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
170 // doAnnotations((RiverAnnotation) artifactFacet.getData(context), artifactFacet, attr, visible);
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
171
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
172 if (name.equals(DURATION_W)) {
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
173 doWOut((WQDay) (artifactFacet.getData(context)), artifactFacet, attr, visible);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9268
diff changeset
174 } else if (name.equals(DURATION_Q)) {
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
175 doQOut((WQDay) artifactFacet.getData(context), artifactFacet, attr, visible);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9268
diff changeset
176 } else if (name.equals(FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_Q)
9259
66b003701546 Added infrastructure height and Q annotation to S-Info flood duration curve chart
mschaefer
parents: 9257
diff changeset
177 || name.equals(FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_W)) {
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
178 doAnnotations((RiverAnnotation) artifactFacet.getData(context), artifactFacet, attr, visible);
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
179 } else if (FloodDurationCurveProcessor.isInfrastructureFacet(name) && (artifactFacet.getData(context) != null)) {
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
180 doAnnotations((RiverAnnotation) artifactFacet.getData(context), artifactFacet, attr, visible);
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
181 } else if (name.equals(MAINVALUES_Q) || name.equals(MAINVALUES_W)) {
9595
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
182 final MainValuesArtifact mva = new MainValuesArtifactWrapper((MainValuesArtifact) artifactFacet.getArtifact());
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
183 if (context.getContextValue("currentKm") != null)
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
184 mva.addStringData("ld_locations", context.getContextValue("currentKm").toString());
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
185 final ArtifactAndFacet mvaf = new ArtifactAndFacet(mva, artifactFacet.getFacet());
9b39cfd39e59 Softwaretests...20181219 6.2.2: Sinfo/Ued Haupt-/Extremwerte queried for the current chart km instead of only the first in range
mschaefer
parents: 9556
diff changeset
186 doAnnotations((RiverAnnotation) mvaf.getData(context), mvaf, attr, visible);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
187 }
9259
66b003701546 Added infrastructure height and Q annotation to S-Info flood duration curve chart
mschaefer
parents: 9257
diff changeset
188 // else if (name.equals(RELATIVE_POINT)) {
66b003701546 Added infrastructure height and Q annotation to S-Info flood duration curve chart
mschaefer
parents: 9257
diff changeset
189 // doPointOut((Point2D) artifactFacet.getData(context), artifactFacet, attr, visible);
66b003701546 Added infrastructure height and Q annotation to S-Info flood duration curve chart
mschaefer
parents: 9257
diff changeset
190 // }
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
191 else if (FacetTypes.IS.MANUALPOINTS(name)) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
192 doPoints(artifactFacet.getData(context), artifactFacet, attr, visible, YAXIS.W.idx);
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9268
diff changeset
193 } else {
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
194 log.warn("Unknown facet name: " + name);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
195 return;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
196 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
197 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
198
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
199 /**
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
200 * Creates the series for a duration curve's W facet.
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
201 *
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
202 * @param wqdays
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
203 * The WQDay store that contains the Ws.
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
204 * @param theme
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
205 */
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
206 protected void doWOut(final WQDay wqdays, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
207
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
208 // log.debug("DurationCurveGenerator.doWOut");
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
209 final XYSeries series = new StyledXYSeries(aaf.getFacetName(), aaf.getFacetDescription(), theme);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
210 final int size = wqdays.size();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
211 for (int i = 0; i < size; i++) {
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
212 final int day = wqdays.getDay(i);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
213 final double w = wqdays.getW(i);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
214 series.add(day, w);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
215 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
216 addAxisSeries(series, YAXIS.W.idx, visible);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
217 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
218
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
219 protected void doPointOut(final Point2D point, final ArtifactAndFacet aandf, final ThemeDocument theme, final boolean visible) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
220
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
221 // log.debug("DurationCurveGenerator.doPointOut");
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
222 final XYSeries series = new StyledXYSeries(aandf.getFacetName(), aandf.getFacetDescription(), theme);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
223 series.add(point.getX(), point.getY());
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
224 addAxisSeries(series, YAXIS.W.idx, visible);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
225 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
226
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
227 /**
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
228 * Creates the series for a duration curve's Q facet.
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
229 *
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
230 * @param wqdays
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
231 * The WQDay store that contains the Qs.
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
232 * @param theme
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
233 */
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
234 protected void doQOut(final WQDay wqdays, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
235
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
236 // log.debug("DurationCurveGenerator.doQOut");
9556
9b8e8fc1f408 Use facetName in all processors as themeType for legend aggregation.
gernotbelger
parents: 9398
diff changeset
237 final XYSeries series = new StyledXYSeries(aaf.getFacetName(), aaf.getFacetDescription(), theme);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
238 final int size = wqdays.size();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
239 for (int i = 0; i < size; i++) {
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
240 final int day = wqdays.getDay(i);
9252
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
241 final double q = wqdays.getQ(i);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
242 series.add(day, q);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
243 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
244 addAxisSeries(series, YAXIS.Q.idx, visible);
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
245 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
246
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
247 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
248 protected YAxisWalker getYAxisWalker() {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
249 return new YAxisWalker() {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
250 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
251 public int length() {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
252 return YAXIS.values().length;
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
253 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
254
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
255 @Override
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
256 public String getId(final int idx) {
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
257 final YAXIS[] yaxes = YAXIS.values();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
258 return yaxes[idx].toString();
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
259 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
260 };
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
261 }
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
262
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
263 // MainValue-Annotations should be visualized by
c2a0028bfa9f Work on S-Info flood duration curve chart
mschaefer
parents:
diff changeset
264 // a line that goes to the curve itself.
9265
e5367900dd6d Small cleanup concerning getPoints
gernotbelger
parents: 9259
diff changeset
265 }

http://dive4elements.wald.intevation.org