annotate artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixWQCurveGenerator.java @ 7691:fa4fbd66e752

(issue1579) Fix axes syncronisation at Gauges The SyncNumberAxis was completely broken. It only synced in one direction and even that did not work correctly when data was added to the axis (and the syncAxis rescaled but forgot the old axis) then there were lots of ways to bypass that scaling. And i also think the trans calculation was wrong. It has been replaced by a "mostly" simple method to just keep the W in M and W in CM+Datum axes in sync. I say "Mostly" because it had to deal with the Bounds interface.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 13 Dec 2013 19:03:00 +0100
parents 4dbbdf0c8b2c
children 75ef6963f1c9
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5978
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5978
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
9 package org.dive4elements.river.exports.fixings;
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
10
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
11 import java.awt.BasicStroke;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
12 import java.awt.Color;
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
13 import java.awt.Font;
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
14 import java.text.DateFormat;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
15 import java.util.ArrayList;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
16 import java.util.List;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
17
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
18 import org.apache.log4j.Logger;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
19 import org.jfree.chart.JFreeChart;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
20 import org.jfree.chart.annotations.XYTextAnnotation;
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
21 import org.jfree.chart.axis.NumberAxis;
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
22 import org.jfree.chart.plot.Marker;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
23 import org.jfree.chart.plot.ValueMarker;
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
24 import org.jfree.chart.plot.XYPlot;
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
25 import org.jfree.chart.title.TextTitle;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
26 import org.jfree.data.xy.XYSeries;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
27 import org.jfree.ui.RectangleAnchor;
3911
36507c71725b W(Q) chart: q sectors are now black and labeled by default
Christian Lins <christian.lins@intevation.de>
parents: 3770
diff changeset
28 import org.jfree.ui.RectangleInsets;
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
29 import org.jfree.ui.TextAnchor;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
30
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
31 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
32 import org.dive4elements.artifactdatabase.state.Facet;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
33 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
34 import org.dive4elements.river.artifacts.StaticWKmsArtifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
35 import org.dive4elements.river.artifacts.WINFOArtifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
36 import org.dive4elements.river.artifacts.access.FixAnalysisAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
37 import org.dive4elements.river.artifacts.model.DateRange;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
38 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
39 import org.dive4elements.river.artifacts.model.NamedDouble;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
40 import org.dive4elements.river.artifacts.model.QWDDateRange;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
41 import org.dive4elements.river.artifacts.model.WKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
42 import org.dive4elements.river.artifacts.model.WQKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
43 import org.dive4elements.river.artifacts.model.fixings.FixFunction;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
44 import org.dive4elements.river.artifacts.model.fixings.FixWQCurveFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
45 import org.dive4elements.river.artifacts.model.fixings.QWD;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
46 import org.dive4elements.river.artifacts.model.fixings.QWI;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
47 import org.dive4elements.river.artifacts.resources.Resources;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
48 import org.dive4elements.river.exports.ChartGenerator;
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
49 import org.dive4elements.river.exports.DischargeCurveGenerator;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
50 import org.dive4elements.river.exports.StyledSeriesBuilder;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
51 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation;
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
52 import org.dive4elements.river.jfree.RiverAnnotation;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
53 import org.dive4elements.river.jfree.JFreeUtil;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
54 import org.dive4elements.river.jfree.StickyAxisAnnotation;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
55 import org.dive4elements.river.jfree.StyledXYSeries;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
56 import org.dive4elements.river.model.Gauge;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5740
diff changeset
57 import org.dive4elements.river.model.River;
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
58 import org.dive4elements.river.themes.ThemeDocument;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
59 import org.dive4elements.river.utils.RiverUtils;
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
60 import org.dive4elements.river.java2d.ShapeUtils;
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
61
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
62 import org.dive4elements.river.jfree.Bounds;
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
63 import org.dive4elements.river.jfree.DoubleBounds;
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
64
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
65 import org.jfree.data.Range;
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
66
3254
9a4707ec7800 Add styles for W(t) chart domain markers
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
67 /**
3286
f062b5a90e26 Add showpointlabel style attribute
Christian Lins <christian.lins@intevation.de>
parents: 3256
diff changeset
68 * Generator for WQ fixing charts.
3254
9a4707ec7800 Add styles for W(t) chart domain markers
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
69 * @author <a href="mailto:christian.lins@intevation.de">Christian Lins</a>
9a4707ec7800 Add styles for W(t) chart domain markers
Christian Lins <christian.lins@intevation.de>
parents: 3215
diff changeset
70 */
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3073
diff changeset
71 public class FixWQCurveGenerator
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3212
diff changeset
72 extends FixChartGenerator
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3212
diff changeset
73 implements FacetTypes
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
74 {
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
75 /** Private logger. */
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
76 private static Logger logger =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
77 Logger.getLogger(FixWQCurveGenerator.class);
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
78
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
79 public static final String I18N_CHART_TITLE =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
80 "chart.fixings.wq.title";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
81
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
82 public static final String I18N_CHART_SUBTITLE =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
83 "chart.fixings.wq.subtitle";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
84
3410
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
85 public static final String I18N_CHART_SUBTITLE1 =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
86 "chart.fixings.wq.subtitle1";
3410
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
87
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
88 public static final String I18N_XAXIS_LABEL =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
89 "chart.fixings.wq.xaxis.label";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
90
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
91 public static final String I18N_YAXIS_LABEL =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
92 "chart.fixings.wq.yaxis.label";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
93
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
94 public static final String I18N_CHART_TITLE_DEFAULT =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
95 "Fixierungsanalyse";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
96
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
97 public static final String I18N_XAXIS_LABEL_DEFAULT =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
98 "Q [m\u00B3/s]";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
99
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
100 public static final String I18N_YAXIS_LABEL_DEFAULT =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
101 "W [NN + m]";
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
102
5739
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
103 public static final double EPSILON = 0.001d;
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
104
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
105 public static enum YAXIS {
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
106 WCm(0),
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
107 W(1);
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
108 public int idx;
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
109 private YAXIS(int c) {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
110 idx = c;
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
111 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
112 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
113
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
114
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
115 /** Needed to access data to create subtitle. */
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
116 protected D4EArtifact artifact;
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
117
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
118 /** Returns value != 0 if the current km is not at a gauge. */
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
119 public double getCurrentGaugeDatum() {
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
120 Object ckm = context.getContextValue(CURRENT_KM);
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
121 if (ckm != null) {
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
122 return DischargeCurveGenerator.getCurrentGaugeDatum(
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
123 (Double) ckm,
6531
52d160b16a4c FixWQCurveGenerator: Set same tolerance to "at Gauge?"-definition as in other w/q cases.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6530
diff changeset
124 (D4EArtifact) getMaster(), 1e-4);
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
125 }
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
126 return 0d;
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
127 }
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
128
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
129 /** Overriden to show second axis also if no visible data present. */
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
130 @Override
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
131 protected void adjustAxes(XYPlot plot) {
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
132 super.adjustAxes(plot);
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
133 if (getCurrentGaugeDatum() != 0d) {
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
134 // Show the W[*m] axis even if there is no data.
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
135 plot.setRangeAxis(1, createYAxis(YAXIS.W.idx));
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
136 syncWAxisRanges();
6559
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
137 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
138 }
6791411ed1fc issue1370: Force second axis if at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6542
diff changeset
139
7691
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
140 // XXX This is a copy of DischargeCurveGenerator syncWAxisRanges
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
141 // even without fancy Q Symetry this class should inherit
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
142 // from there..
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
143 protected void syncWAxisRanges() {
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
144 // Syncronizes the ranges of both W Axes to make sure
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
145 // that the Data matches for both axes.
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
146 Bounds boundsInMGauge = getYBounds(YAXIS.W.idx);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
147 Bounds boundsInCM = getYBounds(YAXIS.WCm.idx);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
148
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
149 // XXX Q-Symetry: I am assuming here that there can only
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
150 // be a fixed Range for WinM as this is currently the only
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
151 // thing that is configureable.
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
152 Range fixedWinMRange = getRangeForAxisFromSettings(
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
153 getYAxisWalker().getId(YAXIS.W.idx));
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
154
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
155 // The combination of Range and Bounds is crazy..
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
156 if (fixedWinMRange != null) {
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
157 boundsInMGauge = new DoubleBounds(fixedWinMRange.getLowerBound(),
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
158 fixedWinMRange.getUpperBound());
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
159 }
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
160
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
161 logger.debug("Syncing Axis Bounds. Bounds W: " + boundsInMGauge.toString() +
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
162 " Bounds Wcm: " + boundsInCM.toString());
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
163
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
164 double datum = getCurrentGaugeDatum();
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
165
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
166 // Convert boundsInMGauge to Datum+cm
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
167 double convertedLower = ((Double)boundsInMGauge.getLower() - datum) * 100;
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
168 double convertedUpper = ((Double)boundsInMGauge.getUpper() - datum) * 100;
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
169 Bounds convertedBounds = new DoubleBounds(convertedLower, convertedUpper);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
170
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
171 // Now combine both Ranges
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
172 boundsInCM = boundsInCM.combine(convertedBounds);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
173
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
174 // Recalculate absolute bounds
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
175 boundsInMGauge = new DoubleBounds((Double)boundsInCM.getLower() / 100d + datum,
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
176 (Double)boundsInCM.getUpper() / 100d + datum);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
177
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
178 // Set the new combined bounds
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
179 setYBounds(YAXIS.W.idx, boundsInMGauge);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
180 setYBounds(YAXIS.WCm.idx, boundsInCM);
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
181 logger.debug("Synced Bounds W: " + boundsInMGauge.toString() +
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
182 " Bounds Wcm: " + boundsInCM.toString());
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
183 }
fa4fbd66e752 (issue1579) Fix axes syncronisation at Gauges
Andre Heinecke <aheinecke@intevation.de>
parents: 7545
diff changeset
184
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
185 @Override
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
186 public void doOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
4361
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
187 logger.debug("doOut: " + aaf.getFacetName());
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
188 if (!prepareChartData(aaf, doc, visible)) {
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
189 logger.warn("Unknown facet, name " + aaf.getFacetName());
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
190 }
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
191 }
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
192
6472
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6467
diff changeset
193 /**
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6467
diff changeset
194 * Return true if data could be handled,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6467
diff changeset
195 * to be overridden to add more handled data.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6467
diff changeset
196 */
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
197 public boolean prepareChartData(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
198 String name = aaf.getFacetName();
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
199
6426
ed27a894292a Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
200 this.artifact = (D4EArtifact) aaf.getArtifact();
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
201
3133
6f6a8e5fb7a4 Theme updates for sector average wq curves/points
Christian Lins <christian.lins@intevation.de>
parents: 3132
diff changeset
202 if(name.startsWith(FIX_SECTOR_AVERAGE_WQ)) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
203 doSectorAverageOut(aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
204 }
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
205 else if(FIX_ANALYSIS_EVENTS_WQ.equals(name)) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
206 doAnalysisEventsOut(aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
207 }
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
208 else if(FIX_REFERENCE_EVENTS_WQ.equals(name)
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
209 || FIX_EVENTS.equals(name)) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
210 doReferenceEventsOut(aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
211 }
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
212 else if(FIX_WQ_CURVE.equals(name)) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
213 doWQCurveOut(aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
214 }
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
215 else if(FIX_OUTLIER.equals(name)) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
216 doOutlierOut(aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
217 }
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
218 else if(QSECTOR.equals(name)) {
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
219 doQSectorOut(aaf, doc, visible);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
220 }
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
221 /*
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
222 else if(FIX_EVENTS.equals(name)) {
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
223 doEventsOut(aaf, doc, visible);
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
224 }
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
225 */
4143
58864f4f6e3b Fix issue946 (own style for wkms annotation facets in wq diagrams).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3911
diff changeset
226 else if(/*STATIC_WKMS_INTERPOL.equals(name) ||*/
58864f4f6e3b Fix issue946 (own style for wkms annotation facets in wq diagrams).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3911
diff changeset
227 STATIC_WKMS_MARKS.equals(name) ||
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
228 STATIC_WKMS.equals(name) ||
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
229 HEIGHTMARKS_POINTS.equals(name) ) {
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
230 doWAnnotations(
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
231 aaf.getData(context),
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
232 aaf,
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
233 doc,
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
234 visible);
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
235 }
4143
58864f4f6e3b Fix issue946 (own style for wkms annotation facets in wq diagrams).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3911
diff changeset
236 else if (LONGITUDINAL_W.equals(name) || STATIC_WQ.equals(name)
6492
f3e5c6d6b0a2 issue1383: FixWQCurveGenerator: handle new facet type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6474
diff changeset
237 || STATIC_WKMS_INTERPOL.equals(name)
f3e5c6d6b0a2 issue1383: FixWQCurveGenerator: handle new facet type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6474
diff changeset
238 || FIX_WQ_LS.equals(name)) {
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
239 doWQOut(aaf.getData(context), aaf, doc, visible);
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
240 }
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
241 else if (name.equals(DISCHARGE_CURVE)) {
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
242 logger.debug("diso " + name);
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
243 doDischargeOut(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
244 (WINFOArtifact) aaf.getArtifact(),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
245 aaf.getData(context),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
246 aaf.getFacetDescription(),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
247 doc,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
248 visible);
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
249 }
5978
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
250 else if (name.equals(MAINVALUES_W) || name.equals(MAINVALUES_Q)) {
6527
e1e04db79e3c issue1370: Translate main values if needed.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6492
diff changeset
251 RiverAnnotation mainValues = (RiverAnnotation) aaf.getData(context);
5978
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
252 doAnnotations(
6527
e1e04db79e3c issue1370: Translate main values if needed.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6492
diff changeset
253 mainValues,
5978
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
254 aaf,
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
255 doc,
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
256 visible);
ebd6e8e234e0 Added mainvalues to fixanalysis wq curves.
Raimund Renkert <rrenkert@intevation.de>
parents: 5867
diff changeset
257 }
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
258 else if (FacetTypes.IS.MANUALPOINTS(aaf.getFacetName())) {
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
259 doPoints(aaf.getData(context),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
260 aaf,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
261 doc, visible, YAXIS.W.idx);
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
262 }
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
263 else {
4361
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
264 return false;
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
265 }
4361
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
266 return true;
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
267 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
268
4361
7302c635dfda FixWQCurveGenerator: Refac, extracted a prepareChartData from doOut, to be reused.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4346
diff changeset
269
6426
ed27a894292a Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
270 /** Add sector average points to chart. */
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
271 protected void doSectorAverageOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
272 logger.debug("doSectorAverageOut");
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
273
3551
e7f1556192b3 Avoid class cast exception in FixWQCurveGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3466
diff changeset
274 QWDDateRange qwdd = (QWDDateRange) aaf.getData(context);
e7f1556192b3 Avoid class cast exception in FixWQCurveGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3466
diff changeset
275 QWD qwd = qwdd != null ? qwdd.getQWD() : null;
e7f1556192b3 Avoid class cast exception in FixWQCurveGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3466
diff changeset
276
3132
459750878157 Adapt doAverageSectorOut() to reflect changes of corresponding facet.
Christian Lins <christian.lins@intevation.de>
parents: 3110
diff changeset
277 if(qwd != null) {
3194
e815cf20bab2 Add point labels to W/Q curve
Christian Lins <christian.lins@intevation.de>
parents: 3193
diff changeset
278 addQWSeries(new QWD[] { qwd }, aaf, doc, visible);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
279 }
3133
6f6a8e5fb7a4 Theme updates for sector average wq curves/points
Christian Lins <christian.lins@intevation.de>
parents: 3132
diff changeset
280 else {
6f6a8e5fb7a4 Theme updates for sector average wq curves/points
Christian Lins <christian.lins@intevation.de>
parents: 3132
diff changeset
281 logger.debug("doSectorAverageOut: qwd == null");
6f6a8e5fb7a4 Theme updates for sector average wq curves/points
Christian Lins <christian.lins@intevation.de>
parents: 3132
diff changeset
282 }
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
283 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
284
6426
ed27a894292a Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
285 /** Add analysis event points to chart. */
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
286 protected void doAnalysisEventsOut(
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
287 ArtifactAndFacet aaf,
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
288 ThemeDocument doc,
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
289 boolean visible
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
290 ) {
3194
e815cf20bab2 Add point labels to W/Q curve
Christian Lins <christian.lins@intevation.de>
parents: 3193
diff changeset
291 logger.debug("doAnalysisEventsOut");
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
292
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3596
diff changeset
293 QWD qwd = (QWD)aaf.getData(context);
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3596
diff changeset
294
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
295 if (qwd == null) {
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
296 logger.debug("doAnalysisEventsOut: qwd == null");
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
297 return;
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
298 }
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3596
diff changeset
299
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
300 double gaugeDatum = getCurrentGaugeDatum();
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
301 boolean atGauge = gaugeDatum != 0d;
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
302
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
303 double factor = atGauge ? 100d : 1d;
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
304
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
305 double w = factor*(qwd.getW()-gaugeDatum);
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
306
7545
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
307 // Force empty symbol.
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
308 if (qwd.getInterpolated()) {
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
309 doc = new ThemeDocument(doc); // prevent potential side effects.
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
310 doc.setValue(ThemeDocument.USE_FILL_PAINT, "true");
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
311 }
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
312
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
313 XYSeries series = new StyledXYSeries(
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
314 aaf.getFacetDescription(),
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
315 doc,
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
316 qwd.getInterpolated()
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
317 ? ShapeUtils.INTERPOLATED_SHAPE
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
318 : ShapeUtils.MEASURED_SHAPE);
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
319
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
320 series.add(qwd.getQ(), w);
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
321
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
322 addAxisSeries(series, atGauge ? YAXIS.WCm.idx : YAXIS.W.idx, visible);
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
323
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
324 if (visible && doc.parseShowPointLabel()) {
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
325
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
326 List<XYTextAnnotation> textAnnos = new ArrayList<XYTextAnnotation>();
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
327
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
328 DateFormat dateFormat = DateFormat.getDateInstance(
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
329 DateFormat.SHORT);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
330 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
331 dateFormat.format(qwd.getDate()),
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
332 qwd.getQ(),
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
333 w);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
334 textAnnos.add(anno);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
335
7527
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
336 RiverAnnotation flysAnno = new RiverAnnotation(null, null, null, doc);
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
337 flysAnno.setTextAnnotations(textAnnos);
0ee545a02204 Simplified code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7525
diff changeset
338 addAnnotations(flysAnno);
3095
6ea299c208cd Themes for fixing curves and debug output
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
339 }
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
340 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
341
4323
33d6d4025d0f FixWQCurveGenerator: Handle extreme_wq_curve facets (stub).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
342
6426
ed27a894292a Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
343 /** Add reference event points to chart. */
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
344 protected void doReferenceEventsOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
345 logger.debug("doReferenceEventsOut");
3110
88d49a0a55f0 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3108
diff changeset
346
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
347 QWI qwd = (QWI)aaf.getData(context);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
348 if (qwd == null) {
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
349 logger.debug("doReferenceEventsOut: qwds == null");
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
350 return;
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
351 }
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3596
diff changeset
352
7545
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
353 // Force empty symbol.
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
354 if (qwd.getInterpolated()) {
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
355 doc = new ThemeDocument(doc); // prevent potential side effects.
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
356 doc.setValue(ThemeDocument.USE_FILL_PAINT, "true");
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
357 }
4dbbdf0c8b2c More on flys/issue1585: Do not fill circle for interpolated W/Q points.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7542
diff changeset
358
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
359 XYSeries series = new StyledXYSeries(
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
360 aaf.getFacetDescription(),
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
361 false, true, doc,
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
362 qwd.getInterpolated()
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
363 ? ShapeUtils.INTERPOLATED_SHAPE
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
364 : ShapeUtils.MEASURED_SHAPE);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
365
7258
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
366 double gaugeDatum = getCurrentGaugeDatum();
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
367
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
368 boolean atGauge = gaugeDatum != 0d;
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
369
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
370 double factor = atGauge ? 100d : 1d;
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
371 double w = factor*(qwd.getW()-gaugeDatum);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
372
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
373 series.add(qwd.getQ(), w, false);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
374
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
375 if (visible && doc.parseShowPointLabel()) {
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
376 DateFormat dateFormat = DateFormat.getDateInstance(
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
377 DateFormat.SHORT);
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
378
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
379 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
380 dateFormat.format(qwd.getDate()),
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
381 qwd.getQ(),
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
382 w);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
383
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
384 List<XYTextAnnotation> textAnnos = new ArrayList<XYTextAnnotation>();
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
385 textAnnos.add(anno);
6868
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
386 RiverAnnotation flysAnno = new RiverAnnotation(null, null, null, doc);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
387 flysAnno.setTextAnnotations(textAnnos);
08e3c22500f3 Fix Analysis: Code simplification in facets.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6687
diff changeset
388 addAnnotations(flysAnno);
3610
66f539df4e8b Issue 716.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3596
diff changeset
389 }
7258
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
390
7542
db780379ea82 issue1585: Part 2/2 of patch from Sascha Teichmann to define datapoint shapes.
sascha.teichmann@intevation.de
parents: 7527
diff changeset
391 addAxisSeries(series, atGauge ? YAXIS.WCm.idx : YAXIS.W.idx, visible);
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
392 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
393
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
394
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
395 private void addPointFromWQKms(WQKms wqkms,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
396 String title,
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
397 ThemeDocument theme,
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
398 boolean visible
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
399 ) {
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
400 XYSeries series = new StyledXYSeries(title, theme);
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
401 Double ckm = (Double) context.getContextValue(CURRENT_KM);
5739
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
402 if (wqkms == null || wqkms.getKms().length == 0 || ckm == null) {
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
403 logger.info("addPointFromWQKms: No event data to show.");
5739
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
404 return;
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
405 }
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
406 double[] kms = wqkms.getKms();
7260
0b32f8980fed issue1490: Fix text annotations of latest points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7259
diff changeset
407 double gaugeDatum = getCurrentGaugeDatum();
0b32f8980fed issue1490: Fix text annotations of latest points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7259
diff changeset
408 double factor = (gaugeDatum == 0d) ? 1d : 100d;
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
409 for (int i = 0 ; i< kms.length; i++) {
5739
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
410 if (Math.abs(kms[i] - ckm) <= EPSILON) {
6876
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
411 series.add(wqkms.getQ(i), wqkms.getW(i), false);
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
412 addAxisSeries(series, YAXIS.W.idx, visible);
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
413 if(visible && theme.parseShowPointLabel()) {
6542
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
414 List<XYTextAnnotation> textAnnos = new ArrayList<XYTextAnnotation>();
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
415 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
416 title,
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
417 wqkms.getQ(i),
7260
0b32f8980fed issue1490: Fix text annotations of latest points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7259
diff changeset
418 factor*(wqkms.getW(i)-gaugeDatum));
6542
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
419 textAnnos.add(anno);
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
420 RiverAnnotation flysAnno = new RiverAnnotation(null, null, null, theme);
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
421 flysAnno.setTextAnnotations(textAnnos);
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
422 addAnnotations(flysAnno);
c5945aca0c8d issue1149: Be able to add label/annotation to event points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6531
diff changeset
423 }
5731
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
424 return;
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
425 }
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
426 }
0152d639d7a7 FixWQCurveGenerator: Render fix events.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5339
diff changeset
427 }
4323
33d6d4025d0f FixWQCurveGenerator: Handle extreme_wq_curve facets (stub).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
428
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
429 protected void doEventsOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
430 logger.debug("doEventsOut");
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
431 // Find W/Q at km.
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
432 addPointFromWQKms((WQKms) aaf.getData(context),
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
433 aaf.getFacetDescription(), doc, visible);
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
434 }
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
435
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
436
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
437 protected void doWQCurveOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
3056
0b5a7a2c3724 Try to workaround some exception in FixWQCurveFacet and FixWQCurveGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3055
diff changeset
438 logger.debug("doWQCurveOut");
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
439
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
440 FixWQCurveFacet facet = (FixWQCurveFacet)aaf.getFacet();
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
441 FixFunction func = (FixFunction)facet.getData(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
442 aaf.getArtifact(), context);
3073
0ace00c0c12a FixA: Improved W/Q facet code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3066
diff changeset
443
0ace00c0c12a FixA: Improved W/Q facet code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3066
diff changeset
444 if (func == null) {
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
445 logger.warn("doWQCurveOut: Facet does not contain FixFunction");
3073
0ace00c0c12a FixA: Improved W/Q facet code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3066
diff changeset
446 return;
0ace00c0c12a FixA: Improved W/Q facet code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3066
diff changeset
447 }
3110
88d49a0a55f0 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3108
diff changeset
448
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
449 double maxQ = func.getMaxQ();
3073
0ace00c0c12a FixA: Improved W/Q facet code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3066
diff changeset
450
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3212
diff changeset
451 if (maxQ > 0) {
3192
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3155
diff changeset
452 StyledXYSeries series = JFreeUtil.sampleFunction2D(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
453 func.getFunction(),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
454 doc,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
455 aaf.getFacetDescription(),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
456 500, // number of samples
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
457 0.0 , // start
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
458 maxQ); // end
3155
74c974b10c75 Output code to trackdown the linecolor problem
Christian Lins <christian.lins@intevation.de>
parents: 3133
diff changeset
459
6474
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
460 double gaugeDatum = getCurrentGaugeDatum();
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
461
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
462 if (gaugeDatum == 0d) {
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
463 addAxisSeries(series, YAXIS.W.idx, visible);
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
464 }
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
465 else {
6530
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
466 StyledXYSeries series2 = JFreeUtil.sampleFunction2D(
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
467 func.getFunction(),
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
468 doc,
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
469 aaf.getFacetDescription(),
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
470 500, // number of samples
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
471 0.0 , // start
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
472 maxQ); // end
2afe2fe12576 FixWQCurveGenerator: Make second axis initial extends match first one.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6527
diff changeset
473 addAxisSeries(series2, YAXIS.W.idx, false);
6474
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
474 // Use second axis at cm if at gauge.
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
475 for (int i = 0, N = series.getItemCount(); i < N; i++) {
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
476 series.updateByIndex(
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
477 i, new Double(100d*(series.getY(i).doubleValue()-gaugeDatum)));
6474
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
478 }
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
479 addAxisSeries(series, YAXIS.WCm.idx, visible);
6aac9ad1f8a8 issue1370: FixWQCurveGenerator: second y axis for fix-w/q diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6473
diff changeset
480 }
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
481 }
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
482 else {
3081
26119b7b3154 Fixing output generator hacking
Christian Lins <christian.lins@intevation.de>
parents: 3076
diff changeset
483 logger.warn("doWQCurveOut: maxQ <= 0");
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
484 }
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
485 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
486
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
487 protected void doOutlierOut(ArtifactAndFacet aaf, ThemeDocument doc, boolean visible) {
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
488 logger.debug("doOutlierOut");
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
489
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
490 QWI[] qws = (QWI[])aaf.getData(context);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
491 addQWSeries(qws, aaf, doc, visible);
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
492 }
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
493
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
494
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
495 /** Add markers for q sectors. */
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
496 protected void doQSectorOut(ArtifactAndFacet aaf, ThemeDocument theme, boolean visible) {
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
497 logger.debug("doQSectorOut");
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
498 if (!visible) {
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
499 return;
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
500 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
501
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
502 Object qsectorsObj = aaf.getData(context);
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
503 if (qsectorsObj == null || !(qsectorsObj instanceof List)) {
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
504 logger.warn("No QSectors coming from data.");
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
505 return;
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
506 }
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
507
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
508 List<?> qsectorsList = (List<?>) qsectorsObj;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
509 if (qsectorsList.size() == 0 || !(qsectorsList.get(0) instanceof NamedDouble)) {
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
510 logger.warn("No QSectors coming from data.");
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
511 return;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
512 }
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
513
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
514 @SuppressWarnings("unchecked")
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
515 List<NamedDouble> qsectors = (List<NamedDouble>) qsectorsList;
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
516
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
517 for (NamedDouble qsector : qsectors) {
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
518 if (Double.isNaN(qsector.getValue())) {
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
519 continue;
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
520 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
521 Marker m = new ValueMarker(qsector.getValue());
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
522 m.setPaint(Color.black);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
523
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
524 float[] dashes = theme.parseLineStyle();
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
525 int size = theme.parseLineWidth();
3593
0ac28739ee15 Simplified code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3588
diff changeset
526 BasicStroke stroke;
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
527 if (dashes.length <= 1) {
3593
0ac28739ee15 Simplified code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3588
diff changeset
528 stroke = new BasicStroke(size);
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
529 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
530 else {
3593
0ac28739ee15 Simplified code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3588
diff changeset
531 stroke = new BasicStroke(size,
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
532 BasicStroke.CAP_BUTT,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
533 BasicStroke.JOIN_ROUND,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
534 1.0f,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
535 dashes,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
536 0.0f);
3593
0ac28739ee15 Simplified code
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3588
diff changeset
537 }
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
538 m.setStroke(stroke);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
539
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
540 if (theme.parseShowLineLabel()) {
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
541 m.setLabel(qsector.getName());
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
542 m.setPaint(theme.parseTextColor());
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
543 m.setLabelFont(theme.parseTextFont());
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
544 }
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
545 Color paint = theme.parseLineColorField();
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
546 if (paint != null) {
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
547 m.setPaint(paint);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
548 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
549 m.setLabelAnchor(RectangleAnchor.TOP_LEFT);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
550 m.setLabelTextAnchor(TextAnchor.TOP_LEFT);
3911
36507c71725b W(Q) chart: q sectors are now black and labeled by default
Christian Lins <christian.lins@intevation.de>
parents: 3770
diff changeset
551 m.setLabelOffset(new RectangleInsets(5, 5, 10, 10));
3578
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
552 addDomainMarker(m);
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
553 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
554 }
bae185bf9d2d Theme the qsector markers.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3551
diff changeset
555
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
556
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
557 /**
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
558 * Add W-Annotations to plot.
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
559 * @param wqkms actual data (double[][]).
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
560 * @param theme theme to use.
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
561 */
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
562 protected void doWAnnotations(
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
563 Object wqkms,
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
564 ArtifactAndFacet aandf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
565 ThemeDocument theme,
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
566 boolean visible
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
567 ) {
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
568 Facet facet = aandf.getFacet();
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
569
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
570 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>();
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
571 if (wqkms instanceof double[][]) {
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
572 logger.debug("Got double[][]");
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
573 double [][] data = (double [][]) wqkms;
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
574 for (int i = 0; i< data[0].length; i++) {
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
575 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
576 (float) data[1][i], StickyAxisAnnotation.SimpleAxis.Y_AXIS));
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
577 }
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
578
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
579 doAnnotations(new RiverAnnotation(facet.getDescription(), xy),
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
580 aandf, theme, visible);
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
581 }
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
582 else {
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
583 // Assume its WKms.
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
584 logger.debug("Got WKms");
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
585 WKms data = (WKms) wqkms;
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
586
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
587 Double ckm = (Double) context.getContextValue(CURRENT_KM);
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
588 double location = (ckm != null)
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
589 ? ckm.doubleValue()
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
590 : getRange()[0];
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
591 double w = StaticWKmsArtifact.getWAtKmLin(data, location);
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
592 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
593 (float) w, StickyAxisAnnotation.SimpleAxis.Y_AXIS));
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
594
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
595 doAnnotations(new RiverAnnotation(facet.getDescription(), xy),
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4143
diff changeset
596 aandf, theme, visible);
3587
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
597 }
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
598 }
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
599
9dfbd36474b8 Add more facets to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3585
diff changeset
600
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
601 /**
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
602 * Add series with discharge curve to diagram.
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
603 */
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
604 protected void doDischargeOut(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
605 WINFOArtifact artifact,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
606 Object o,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
607 String description,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
608 ThemeDocument theme,
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
609 boolean visible)
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
610 {
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
611 WQKms wqkms = (WQKms) o;
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
612
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
613 String gaugeName = wqkms.getName();
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
614
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5864
diff changeset
615 River river = RiverUtils.getRiver(artifact);
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
616
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
617 if (river == null) {
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
618 logger.debug("no river found");
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
619 return;
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
620 }
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
621
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
622 Gauge gauge = river.determineGaugeByName(gaugeName);
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
623
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
624 if (gauge == null) {
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
625 logger.debug("no gauge found");
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
626 return;
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
627 }
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
628
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
629 XYSeries series = new StyledXYSeries(description, theme);
7258
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
630
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
631 double gaugeDatum = getCurrentGaugeDatum();
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
632
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
633 if (true || gaugeDatum == 0d) {
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
634 StyledSeriesBuilder.addPointsQW(series, wqkms);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
635 addAxisSeries(series, YAXIS.W.idx, visible);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
636 }
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
637 else {
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
638 XYSeries series2 = new StyledXYSeries(description, theme);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
639 StyledSeriesBuilder.addPointsQW(series2, wqkms);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
640 addAxisSeries(series2, YAXIS.W.idx, false);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
641
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
642 // Use second axis...
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
643 StyledSeriesBuilder.addPointsQW(series, wqkms, -gaugeDatum, 100d);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
644 addAxisSeries(series, YAXIS.WCm.idx, visible);
0e6b399e72f9 issue1490: Translate text annotations position when displaying w/q- curve at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7257
diff changeset
645 }
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
646 }
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
647
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
648
3588
76571c601d06 Add more discharge curve data to DC and W/Q diag.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3587
diff changeset
649 /**
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
650 * Add WQ Data to plot.
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
651 * @param wqkms data as double[][]
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
652 */
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
653 protected void doWQOut(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
654 Object wqkms,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
655 ArtifactAndFacet aaf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
656 ThemeDocument theme,
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
657 boolean visible
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
658 ) {
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
659 logger.debug("FixWQCurveGenerator: doWQOut");
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
660 if (wqkms instanceof WQKms) {
5739
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
661 // TODO As in doEventsOut, the value-searching should
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
662 // be delivered by the facet already (instead of in the Generator).
9950cbb7dba3 FixWQCurveGenerator: issue1149, show calculated wq as points.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5731
diff changeset
663 logger.debug("FixWQCurveGenerator: doWQOut: WQKms");
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
664
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
665 addPointFromWQKms((WQKms) aaf.getData(context), aaf.getFacetDescription(), theme, visible);
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
666 }
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
667 else {
5740
0516c1f8f674 FixWQCurveGenerator: Minor Refactoring.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5739
diff changeset
668 logger.debug("FixWQCurveGenerator: doWQOut: double[][]");
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
669 double [][] data = (double [][]) wqkms;
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
670
6876
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
671 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, true, theme);
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
672 StyledSeriesBuilder.addPoints(series, data, true);
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
673
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
674 addAxisSeries(series, YAXIS.W.idx, visible);
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
675 }
3585
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
676 }
c105b4466b4e Basedata in FixA WQ DC and diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3578
diff changeset
677
3596
6aea625190da Handle former W calculations in fixA W/Q out.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3593
diff changeset
678
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
679 protected void addQWSeries(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
680 QWI [] qws,
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
681 ArtifactAndFacet aaf,
6905
1b35b2ddfc28 Artifacts: Introduce ThemeDocument & make stuff compileable again. THIS BREAKS THE SYSTEM! TODO: Move ThemeUtils into ThemeDocument.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6876
diff changeset
682 ThemeDocument theme,
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
683 boolean visible
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
684 ) {
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
685 if (qws == null) {
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
686 return;
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
687 }
3194
e815cf20bab2 Add point labels to W/Q curve
Christian Lins <christian.lins@intevation.de>
parents: 3193
diff changeset
688
6876
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
689 XYSeries series = new StyledXYSeries(
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
690 aaf.getFacetDescription(),
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
691 false, true,
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
692 theme);
a071f0a80883 FixA W/Q Diagram: Allow duplicate points. It should work but it doesn't. :-/
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6868
diff changeset
693
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
694 List<XYTextAnnotation> textAnnos =
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
695 new ArrayList<XYTextAnnotation>(qws.length);
3062
7660cfe5e8f6 FixWQCurveGenerator can generate charts from Fix*-Facets (in theory and not complete)
Christian Lins <christian.lins@intevation.de>
parents: 3060
diff changeset
696
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
697 DateFormat dateFormat = DateFormat.getDateInstance(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
698 DateFormat.SHORT);
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
699
7259
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
700 double gaugeDatum = getCurrentGaugeDatum();
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
701 double factor = (gaugeDatum == 0d) ? 1d : 100d;
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
702 for (QWI qw: qws) {
7259
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
703 series.add(qw.getQ(), factor*(qw.getW()-gaugeDatum), false);
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
704
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
705 XYTextAnnotation anno = new CollisionFreeXYTextAnnotation(
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
706 dateFormat.format(qw.getDate()),
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
707 qw.getQ(),
7259
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
708 factor*(qw.getW()-gaugeDatum));
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
709 textAnnos.add(anno);
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
710 }
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
711
7259
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
712 if (gaugeDatum == 0d) {
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
713 addAxisSeries(series, YAXIS.W.idx, visible);
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
714 }
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
715 else {
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
716 addAxisSeries(series, YAXIS.WCm.idx, visible);
a36e26abcf54 issue1490: Translate other points as well, when at gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7258
diff changeset
717 }
7270
a365e587af67 Little workaround not to crash uf there is no theme style. TODO: Figure out why the theme style is null at this point.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7261
diff changeset
718 if (visible && theme != null && theme.parseShowPointLabel()) {
5864
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
719 RiverAnnotation flysAnno =
f2e46a668fe6 River artifacts: Renamed FLYSAnnotation to RiverAnnotation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
720 new RiverAnnotation(null, null, null, theme);
3729
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
721 flysAnno.setTextAnnotations(textAnnos);
e727e3ebdf85 Factored out a pure QW model to be more reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3610
diff changeset
722 addAnnotations(flysAnno);
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
723 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
724 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
725
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
726 @Override
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
727 protected String getChartTitle() {
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
728 return Resources.format(
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
729 context.getMeta(),
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
730 I18N_CHART_TITLE,
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
731 I18N_CHART_TITLE_DEFAULT,
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
732 context.getContextValue(CURRENT_KM));
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
733 }
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
734
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
735 @Override
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
736 protected String getDefaultChartTitle() {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
737 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
738 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
739
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
740 @Override
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
741 protected String getDefaultChartSubtitle() {
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
742 FixAnalysisAccess access = new FixAnalysisAccess(artifact);
3409
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 3408
diff changeset
743 DateRange dateRange = access.getDateRange();
97ad960f5579 Add subtitle to Fix W/Q chart and refactor addSubtitle() method(s)
Christian Lins <christian.lins@intevation.de>
parents: 3408
diff changeset
744 DateRange refRange = access.getReferencePeriod();
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
745
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
746 if (dateRange != null && refRange != null) {
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
747 return Resources.format(
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
748 context.getMeta(),
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
749 I18N_CHART_SUBTITLE,
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
750 "",
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7260
diff changeset
751 access.getRiverName(),
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
752 dateRange.getFrom(),
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
753 dateRange.getTo(),
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
754 refRange.getFrom(),
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
755 refRange.getTo());
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
756 }
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
757
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
758 return null;
3406
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
759 }
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
760
3732e1bab0aa Add kilometer to chart titles
Christian Lins <christian.lins@intevation.de>
parents: 3286
diff changeset
761 @Override
3410
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
762 protected void addSubtitles(JFreeChart chart) {
3466
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
763 String defaultSubtitle = getDefaultChartSubtitle();
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
764
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
765 if (defaultSubtitle == null || defaultSubtitle.length() == 0) {
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
766 return;
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
767 }
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
768
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
769 chart.addSubtitle(new TextTitle(defaultSubtitle));
8160e62bbb3a Registered new output 'fix_vollmer_wq_curve' for the vollmer path of fixings analysis module; create required Facets for it after calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3410
diff changeset
770
3410
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
771 StringBuilder buf = new StringBuilder();
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
772
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
773 // Add analysis periods as additional subtitle
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
774 FixAnalysisAccess access = new FixAnalysisAccess(artifact);
3410
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
775 DateRange[] aperiods = access.getAnalysisPeriods();
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
776 buf.append(msg("fix.analysis.periods"));
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
777 buf.append(": ");
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
778 for(int n = 0; n < aperiods.length; n++) {
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
779 buf.append(
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
780 Resources.format(
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
781 context.getMeta(),
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
782 I18N_CHART_SUBTITLE1,
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
783 "",
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
784 aperiods[n].getFrom(),
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
785 aperiods[n].getTo()));
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
786 if(n + 1 < aperiods.length) {
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
787 buf.append("; ");
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
788 }
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
789 }
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
790
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
791 chart.addSubtitle(new TextTitle(buf.toString()));
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
792 }
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
793
f382127df48e Add analysis periods as subtitle to W/Q chart
Christian Lins <christian.lins@intevation.de>
parents: 3409
diff changeset
794 @Override
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
795 protected String getDefaultXAxisLabel() {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
796 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
797 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
798
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
799 @Override
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
800 protected String getDefaultYAxisLabel(int pos) {
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
801 D4EArtifact flys = (D4EArtifact) master;
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
802
7525
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
803 String unit = pos == 0
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
804 ? "cm"
6650485c2c9b Part fix for flys/issue1585: Use result from fitting to display interpolated W/Q points, too. TODO: Draw interpolated as circles.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7270
diff changeset
805 : RiverUtils.getRiver(flys).getWstUnit().getName();
6467
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
806
0f997d6397c6 FixWQCurveGenerator: Introduce second (cm) axis.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6438
diff changeset
807 return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT, new Object[] { unit });
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
808 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
809
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
810 @Override
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
811 protected ChartGenerator.YAxisWalker getYAxisWalker() {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
812 return new YAxisWalker() {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
813 @Override
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
814 public int length() {
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
815 return YAXIS.values().length;
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
816 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
817
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
818 @Override
3770
6a08f4dc790b Manual Points for fixing charts (not working yet)
Christian Lins <christian.lins@intevation.de>
parents: 3729
diff changeset
819 public String getId(int idx) {
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
820 YAXIS[] yaxes = YAXIS.values();
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
821 return yaxes[idx].toString();
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
822 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
823 };
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3073
diff changeset
824 }
3055
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
825 }
1fbf8462f808 FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
826 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org