annotate gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChart.java @ 846:8b6ef091d38c

It is possible to draw VerticalProfileCharts with just one single data point (issue229). gnv-artifacts/trunk@962 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 21 Apr 2010 08:46:23 +0000
parents 2423cefe7d39
children ec512e7992c6
rev   line source
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.gnv.chart;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
3 import de.intevation.gnv.geobackend.base.Result;
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
4
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
5 import de.intevation.gnv.state.describedata.KeyValueDescibeData;
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
6
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.util.Collection;
334
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
8 import java.util.HashMap;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import java.util.Iterator;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import java.util.Locale;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
11 import java.util.Map;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.jfree.chart.ChartTheme;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
16
315
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
17 import org.jfree.chart.axis.Axis;
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
18 import org.jfree.chart.axis.NumberAxis;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
19
315
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
20 import org.jfree.chart.plot.PlotOrientation;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
21 import org.jfree.chart.plot.XYPlot;
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
22
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
23 import org.jfree.data.Range;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
24
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
25 import org.jfree.data.general.Series;
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
26
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 import org.jfree.data.xy.XYSeries;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import org.jfree.data.xy.XYSeriesCollection;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 /**
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
31 * This class is used to create xy charts of vertical profiles.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
32 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
33 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 */
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 public class VerticalProfileChart
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 extends AbstractXYLineChart
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 {
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
38 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
39 * Default axis identifier which is used if @see #getDependendAxisName does
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
40 * not return a value. The value of this field is {@value}.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
41 */
530
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
42 public static final String DEFAULT_AXIS = "KPOSITION";
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
43
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
44 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
45 * Logger used for logging with log4j.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
46 */
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 private static Logger log = Logger.getLogger(VerticalProfileChart.class);
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
49 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
50 * Constant used for gap detection. Its value is {@value}.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
51 */
831
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
52 protected static int PERCENTAGE = 5;
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
53
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
54 /**
815
22c18083225e Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
55 * Constnat used for gap detection in @see #gridDetection.
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
56 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
57 protected final double GAP_MAX_LEVEL = Math.sqrt(2.0);
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
58
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
59 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
60 * Constant used for gap detection in @see #addGaps. Its value is {@value}.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
61 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
62 protected final int GAP_MAX_VALUES = 60;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
63
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
64 /**
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
65 * Map to store max ranges of each parameter
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
66 * (org.jfree.chart.axis.Axis.setAutoRange(true) doesn't seem to work
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
67 * properly.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
68 */
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
69 protected Map values;
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
70
831
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
71 static {
835
2423cefe7d39 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 831
diff changeset
72 /* The percentage defining the width of a gap should be configured in
831
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
73 * conf.xml instead of being configured in a system property */
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
74 PERCENTAGE = Integer.getInteger("chart.gap.percentage", PERCENTAGE);
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
75 }
bcdcce146c14 Read a system property to adjust the percentage that defines the size of a gap in charts (issue175).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 815
diff changeset
76
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
78 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
79 * Constructor used to create xy-charts.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
80 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
81 * @param labels Labels used to be displayed in title, subtitle and so on.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
82 * @param theme ChartTheme used to adjust the rendering of this chart.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
83 * @param parameters Collection containing a bunch of parameters.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
84 * @param measurements Collection containing a bunch of measurements.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
85 * @param dates Collection containing a bunch of date objects.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
86 * @param result Collection containing a bunch of <code>Result</code>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
87 * objects which contain the actual data items to be displayed.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
88 * @param timeGaps Collection with timegap definitions.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
89 * @param locale Locale used to specify the format of labels, numbers, ...
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
90 * @param linesVisible Render lines between data points if true, otherwise
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
91 * not.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
92 * @param shapesVisible Render vertices as points if true, otherwise not.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
93 */
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 public VerticalProfileChart(
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 ChartLabels labels,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 ChartTheme theme,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 Collection parameters,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 Collection measurements,
310
45625b5cd6d4 Added timegap definitions to charts. Adapted constructors and constructor calls.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 301
diff changeset
99 Collection dates,
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 Collection result,
310
45625b5cd6d4 Added timegap definitions to charts. Adapted constructors and constructor calls.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 301
diff changeset
101 Collection timeGaps,
327
22a6493e8460 New options in chart template: visibility of lines and points in charts and point's size.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
102 Locale locale,
22a6493e8460 New options in chart template: visibility of lines and points in charts and point's size.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
103 boolean linesVisible,
22a6493e8460 New options in chart template: visibility of lines and points in charts and point's size.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
104 boolean shapesVisible
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 ) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 this.labels = labels;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 this.theme = theme;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 this.parameters = parameters;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 this.measurements = measurements;
310
45625b5cd6d4 Added timegap definitions to charts. Adapted constructors and constructor calls.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 301
diff changeset
110 this.dates = dates;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 this.resultSet = result;
310
45625b5cd6d4 Added timegap definitions to charts. Adapted constructors and constructor calls.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 301
diff changeset
112 this.timeGaps = timeGaps;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 this.locale = locale;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 this.PLOT_ORIENTATION = PlotOrientation.HORIZONTAL;
327
22a6493e8460 New options in chart template: visibility of lines and points in charts and point's size.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
115 this.linesVisible = linesVisible;
22a6493e8460 New options in chart template: visibility of lines and points in charts and point's size.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 315
diff changeset
116 this.shapesVisible = shapesVisible;
334
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
117 this.datasets = new HashMap();
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
118 this.ranges = new HashMap();
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
119 this.values = new HashMap();
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
123 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
124 * @see de.intevation.gnv.chart.AbstractXYLineChart#initData()
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
125 */
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
126 @Override
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 protected void initData() {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 log.debug("init data for VerticalProfileChart");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 String breakPoint1 = null;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 String breakPoint2 = null;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 String breakPoint3 = null;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 Iterator iter = resultSet.iterator();
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 Result row = null;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 String seriesName = null;
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
137 String parameter = null;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 XYSeries series = null;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
140 int idx = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
141 int startPos = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
142 int endPos = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
143 double startValue = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
144 double endValue = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
145
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
146 Result[] results =
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
147 (Result[]) resultSet.toArray(new Result[resultSet.size()]);
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 while (iter.hasNext()) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 row = (Result) iter.next();
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152 // add current data to plot and prepare for next one
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153 if (!row.getString("GROUP1").equals(breakPoint1) ||
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154 !row.getString("GROUP2").equals(breakPoint2) ||
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 !row.getString("GROUP3").equals(breakPoint3)
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156 ) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 log.debug("prepare data/plot for next dataset");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 if(series != null) {
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
160 gapDetection(results, series, startPos, endPos);
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
161 addSeries(series, parameter, idx);
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
162
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
163 startPos = endPos +1;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 // prepare variables for next plot
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 breakPoint1 = row.getString("GROUP1");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 breakPoint2 = row.getString("GROUP2");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 breakPoint3 = row.getString("GROUP3");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 seriesName = createSeriesName(
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 breakPoint1,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 breakPoint2,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 breakPoint3
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 );
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
176 parameter = findParameter(seriesName);
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 log.debug("next dataset is '" + seriesName + "'");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 series = new XYSeries(seriesName);
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
180 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182 addValue(row, series);
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
183 Object x = getValue(row);
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
184 Double y = row.getDouble("YORDINATE");
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
185 if (x != null && y != null) {
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
186 storeMaxRange(ranges, y, parameter);
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
187 storeMaxValue(values, x, parameter);
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
188 }
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
189 endPos++;
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
192 if (results.length == 0)
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
193 return;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
194
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
195 gapDetection(results, series, startPos, endPos);
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
196 addSeries(series, parameter, idx);
310
45625b5cd6d4 Added timegap definitions to charts. Adapted constructors and constructor calls.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 301
diff changeset
197
334
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
198 addDatasets();
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
202 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
203 * Extract the important value from <code>Result</code> object.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
204 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
205 * @param row <code>Result</code> object which contains a required value.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
206 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
207 * @return X-ordinate
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
208 */
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
209 protected Object getValue(Result row) {
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
210 return row.getDouble("XORDINATE");
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
211 }
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
212
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
213
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
214 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
215 * General method to start a gap detection. The switch between standard gap
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
216 * detection method <code>addGaps</code> and a specialized method
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
217 * <code>addGapsOnGrid</code> is done by a parameter <code>DATEID</code>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
218 * which is stored a each <code>Result</code> object. Specialized method is
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
219 * used if <code>DATEID</code> equals 2, otherwise the standard method is
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
220 * used.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
221 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
222 * @param results Array of <code>Result</code> objects storing data of
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
223 * this chart.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
224 * @param series Series used to add gaps.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
225 * @param startPos Index of first element of series in results.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
226 * @param endPos Index of last element of series in results.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
227 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
228 protected void gapDetection(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
229 Result[] results,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
230 Series series,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
231 int startPos,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
232 int endPos
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
233 ) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
234 double startValue = results[startPos].getDouble("XORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
235 double endValue = results[endPos-1].getDouble("XORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
236 if (results[0].getInteger("DATAID") == 2)
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
237 addGapsOnGrid(results, series, startPos, endPos);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
238 else
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
239 addGaps(results, series, startValue, endValue, startPos, endPos);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
240 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
241
846
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
242 @Override
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
243 protected void prepareAxis(String seriesKey, int idx) {
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
244 super.prepareAxis(seriesKey, idx);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
245
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
246 XYPlot plot = chart.getXYPlot();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
247 NumberAxis domainAxis = (NumberAxis) plot.getRangeAxis();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
248 NumberAxis rangeAxis = (NumberAxis) plot.getDomainAxis();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
249
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
250 Range domainRange = domainAxis.getRange();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
251 Range rangeRange = rangeAxis.getRange();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
252 log.debug("Domain axis range before: " + domainRange.toString());
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
253 log.debug("Range axis range before: " + rangeRange.toString());
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
254
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
255 domainRange = Range.expand(domainRange, LOWER_MARGIN, UPPER_MARGIN);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
256 rangeRange = Range.expand(rangeRange, LOWER_MARGIN, UPPER_MARGIN);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
257
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
258 double lower = domainRange.getLowerBound();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
259 double upper = domainRange.getUpperBound();
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
260
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
261 if (lower == upper) {
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
262 domainRange = new Range(
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
263 lower - (lower * 0.05d),
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
264 upper + (upper * 0.05d));
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
265 }
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
266
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
267 log.debug("Domain axis range after: " + domainRange.toString());
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
268 log.debug("Range axis range after: " + rangeRange.toString());
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
269 domainAxis.setRange(domainRange);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
270 rangeAxis.setRange(rangeRange);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
271
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
272 plot.setRangeAxis(domainAxis);
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
273 }
8b6ef091d38c It is possible to draw VerticalProfileCharts with just one single data point (issue229).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 835
diff changeset
274
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
275
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
276 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
277 * Method to expand max range of a range axis identified by seriesKey.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
278 * <code>LOWER_MARGIN</code> and <code>UPPER_MARGIN</code> are used to
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
279 * expand the range.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
280 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
281 * @param seriesKey Key to identify the series stored at the current
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
282 * Dataset.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
283 * @param idx Currently not used.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
284 */
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
285 protected void prepareRangeAxis(String seriesKey, int idx) {
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
286 XYPlot plot = chart.getXYPlot();
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
287 NumberAxis xAxis = (NumberAxis) plot.getDomainAxis();
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
288
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
289 Range xRange = (Range) values.get(seriesKey);
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
290 xAxis.setRange(Range.expand(xRange, LOWER_MARGIN, UPPER_MARGIN));
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
291 log.debug("Max X-Range of dataset is: " + xRange.toString());
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
292 }
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
293
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
294
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
295 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
296 * @see de.intevation.gnv.chart.AbstractXYLineChart#addValue(Result, Series)
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
297 */
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
298 @Override
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
299 protected void addValue(Result row, Series series) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
300 ((XYSeries) series).add(
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
301 row.getDouble("XORDINATE"),
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
302 row.getDouble("YORDINATE")
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
303 );
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
305
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
306
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
307 /**
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 788
diff changeset
308 * @param parameter
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
309 * @see de.intevation.gnv.chart.AbstractXYLineChart#addSeries(Series, String,
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
310 * int)
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
311 */
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
312 @Override
364
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
313 protected void addSeries(Series series, String parameter, int idx) {
2413273f1c13 Workarround: Store lower and upper bounds of data while iterating over all data and set the max range of axes with these information. JFreeCharts method NumberAxis.setAutoRange(true) doesn't seem to work properly.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 340
diff changeset
314 log.debug("add series (" + parameter + ")to chart");
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 if (series == null) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317 log.warn("no data to add");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 return;
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320
334
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
321 XYSeriesCollection xysc = null;
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
322
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
323 if (datasets.containsKey(parameter))
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
324 xysc = (XYSeriesCollection) datasets.get(parameter);
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
325 else
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
326 xysc = new XYSeriesCollection();
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
327
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
328 xysc.addSeries((XYSeries) series);
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
329 datasets.put(parameter, xysc);
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
330 }
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
331
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
332
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
333 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
334 * Method to add processed datasets to plot. Each dataset is adjusted using
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
335 * <code>prepareAxis</code> and <code>adjustRenderer</code> methods.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
336 */
334
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
337 protected void addDatasets() {
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
338 Iterator iter = parameters.iterator();
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
339 XYPlot plot = chart.getXYPlot();
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
340 int idx = 0;
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
341
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
342 XYSeriesCollection xysc = null;
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
343 KeyValueDescibeData data = null;
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
344 String key = null;
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
345 while (iter.hasNext()) {
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
346 data = (KeyValueDescibeData) iter.next();
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
347 key = data.getValue();
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
348
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
349 if (datasets.containsKey(key)) {
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
350 xysc = (XYSeriesCollection)datasets.get(key);
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
351 plot.setDataset(idx, xysc );
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
352 log.debug("Added " + key + " parameter to plot.");
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
353 prepareAxis(key, idx);
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
354 adjustRenderer(
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
355 idx++,
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
356 xysc.getSeriesCount(),
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
357 linesVisible,
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
358 shapesVisible
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
359 );
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
360 }
e37930705daa Changed the way of adding data to charts. Same parameters have one axis - not each parameter its own one.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
361 }
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
362 }
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
363
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
364
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
365 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
366 * Method used to store the max y-range of each parameter in this chart.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
367 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
368 * @param values Map to store max values for each parameter.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
369 * @param val Value used to be a Double.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
370 * @param parameter Title used to identify a range object stored in values.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
371 */
656
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
372 protected void storeMaxValue(Map values, Object val, String parameter) {
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
373 double value = ((Double) val).doubleValue();
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
374 Range range = null;
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
375
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
376 range = values.containsKey(parameter)
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
377 ? (Range) values.get(parameter)
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
378 : new Range(value, value);
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
379
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
380 double lower = range.getLowerBound();
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
381 double upper = range.getUpperBound();
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
382
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
383 lower = value < lower ? value : lower;
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
384 upper = value > upper ? value : upper;
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
385
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
386 values.put(parameter, new Range(lower, upper));
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
387 }
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
388
b98d1adee7a6 Added an offset of five percent between values and chart border in vertical profile charts (issue186).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 643
diff changeset
389
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
390 /**
788
e8a9e84a0328 Corrected JavaDoc errors in Chart Package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 779
diff changeset
391 * @param locale
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
392 * @see de.intevation.gnv.chart.AbstractXYLineChart#localizeDomainAxis(Axis,
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
393 * Locale)
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
394 */
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
395 @Override
315
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
396 protected void localizeDomainAxis(Axis axis, Locale locale) {
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
397 // call localizeRangeAxis from superclass which formats NumberAxis
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
398 super.localizeRangeAxis(axis, locale);
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
399 }
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
400
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
401
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
402 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
403 * @see de.intevation.gnv.chart.AbstractXYLineChart#createSeriesName(String,
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
404 * String, String)
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
405 */
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
406 @Override
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
407 protected String createSeriesName(
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
408 String breakPoint1,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
409 String breakPoint2,
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
410 String breakPoint3
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
411 ) {
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
412 log.debug("create seriesname of verticalprofile chart");
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
413 return findValueTitle(parameters, breakPoint1) +
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
414 " " +
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
415 findValueTitle(measurements, breakPoint2) +
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
416 "m";
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
417 }
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
418
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
419
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
420 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
421 * Method used to add gaps between data points on grids. The real detection
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
422 * is done in <code>gridDetection</code>.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
423 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
424 * @param results Array of <code>Result</code> objects storing the relevant
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
425 * values.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
426 * @param series Series object where the gaps are added to.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
427 * @param startPos Index of first element which should be used in gap
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
428 * detection. Other series are stored in results as well.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
429 * @param endPos Index of last element which should be used in gap
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
430 * detection.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
431 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
432 protected void addGapsOnGrid(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
433 Result[] results,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
434 Series series,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
435 int startPos,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
436 int endPos
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
437 ) {
530
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
438 String axis = null;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
439
530
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
440 if (results.length > (startPos+1)) {
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
441 axis = getDependendAxisName(
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
442 results[startPos],
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
443 results[startPos+1]
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
444 );
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
445 }
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
446 else {
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
447 axis = DEFAULT_AXIS;
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
448 }
d2c68f2f619b Fixed an ArrayIndexOutOfBounds-exceptions which occured if there are less than two data points for chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
449
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
450 double range = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
451 int last = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
452 int current = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
453
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
454 for (int i = startPos+1; i < endPos; i++) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
455 last = results[i-1].getInteger(axis);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
456 current = results[i].getInteger(axis);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
457
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
458 boolean detected = gridDetection(last, current);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
459
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
460 if (detected) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
461 double xOld = results[i-1].getDouble("XORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
462 double xNow = results[i].getDouble("XORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
463 log.debug("Gap detected on grid between "+ xOld +" and "+ xNow);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
464 ((XYSeries) series).add(xOld+0.0001, null);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
465 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
466 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
467 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
468
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
469
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
470 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
471 * Standarad method to add gaps. There are two different methods to detect
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
472 * gaps. <code>simpleDetection</code> is used if the number of data points
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
473 * in this chart is lower than <code>GAP_MAX_VALUES</code>. Otherwise
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
474 * <code>specialDetection</code> is used. A data point with
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
475 * <code>null</code> value is added where a gap should be. This lets
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
476 * JFreeChart break the current graph.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
477 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
478 * @param results Array of <code>Result</code> objects storing the relevant
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
479 * values.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
480 * @param series Series object where the gaps are added to.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
481 * @param startValue First data point value in series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
482 * @param endValue Last data point value in series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
483 * @param startPos Index of first data point in results which contains all
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
484 * data points of all series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
485 * @param endPos Index of last data point in results which contains all data
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
486 * points of all series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
487 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
488 protected void addGaps(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
489 Result[] results,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
490 Series series,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
491 double startValue,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
492 double endValue,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
493 int startPos,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
494 int endPos
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
495 ) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
496
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
497 double last = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
498 double current = 0;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
499 int num = results.length;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
500
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
501 for (int i = startPos+1; i < endPos; i++) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
502 boolean detected = false;
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
503
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
504 last = results[i-1].getDouble("YORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
505 current = results[i].getDouble("YORDINATE");
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
506
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
507 // gap detection for more than GAP_MAX_VALUES values
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
508 if (num > GAP_MAX_VALUES)
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
509 detected = simpleDetection(startValue, endValue, last, current);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
510 // gap detection for less than GAP_MAX_VALUES values
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
511 else
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
512 detected = specialDetection(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
513 startValue,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
514 endValue,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
515 last,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
516 current,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
517 num
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
518 );
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
519
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
520 if (detected) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
521 log.info("Gap between " + last + " and " + current);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
522 ((XYSeries) series).add((last+current)/2, null);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
523 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
524 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
525 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
526
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
527
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
528 /**
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
529 * Simple method to detect gaps. A gap is detected if the delta between two
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
530 * data points (current, last) is bigger than <code>PERCENTAGE</code> percent
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
531 * of delta of start and end.
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
532 * <br>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
533 * (smallDelta &gt; delta / 100 * PERCENTAGE)
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
534 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
535 * @param start First data point value in a series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
536 * @param end Last data point value in a series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
537 * @param last Left value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
538 * @param current Right value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
539 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
540 * @return true, if a gap is detected between last and current - otherwise
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
541 * false.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
542 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
543 protected boolean simpleDetection(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
544 double start,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
545 double end,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
546 double last,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
547 double current
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
548 ) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
549 double delta = Math.abs(end - start);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
550 double smallDelta = Math.abs(current - last);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
551
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
552 return (smallDelta > delta / 100 * PERCENTAGE);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
553 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
554
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
555
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
556 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
557 * Method to detect gaps between two data points. Following formula is used
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
558 * for detection:<br>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
559 * smallDelta &gt; (3.0 / (count - 1) * delta)<br>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
560 * smallDelta = current - last<br>
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
561 * delta = end - start
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
562 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
563 * @param start First data point value in a series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
564 * @param end Last data point value in a series.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
565 * @param last Left value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
566 * @param current Right value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
567 *
788
e8a9e84a0328 Corrected JavaDoc errors in Chart Package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 779
diff changeset
568 * @param count
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
569 * @return true, if a gap is detected between last and current - otherwise
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
570 * false.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
571 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
572 protected boolean specialDetection(
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
573 double start,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
574 double end,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
575 double last,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
576 double current,
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
577 int count
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
578 ) {
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
579 double delta = Math.abs(end - start);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
580 double smallDelta = Math.abs(current - last);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
581
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
582 return (smallDelta > (3.0 / (count - 1) * delta));
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
583 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
584
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
585
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
586 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
587 * Method used to detect gaps between two data points grids. If the delta
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
588 * between current and last is bigger than <code>GAP_MAX_LEVEL</code>, a gap
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
589 * is detected.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
590 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
591 * @param last Left value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
592 * @param current Right value
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
593 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
594 * @return True, if a gap was detected - otherwise false.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
595 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
596 protected boolean gridDetection(double last, double current) {
643
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
597 if (log.isDebugEnabled()) {
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
598 log.debug("######################################################");
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
599 log.debug("Parameters for gap detection");
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
600 log.debug("Defined gap size for grids: " + GAP_MAX_LEVEL);
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
601 log.debug("1st value to compare: " + last);
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
602 log.debug("2nd value to compare: " + current);
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
603 log.debug("Difference: " + Math.abs(current - last));
24a85678bd39 Added some more debug information while gap detection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 530
diff changeset
604 }
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
605 return (Math.abs(current - last) > GAP_MAX_LEVEL);
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
606 }
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
607
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
608
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
609 /**
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
610 * This method returns the key which is used to retrieve the y-value served
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 767
diff changeset
611 * by a <code>Result</code> object.
767
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
612 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
613 * @param first <code>Result</code> object - not used in this class.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
614 * @param second <code>Result</code> object - not used in this class.
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
615 *
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
616 * @return the string "KPOSITION"
79401c871da4 Added and repaired javadoc in de.intevation.gnv.chart package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 656
diff changeset
617 */
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
618 protected String getDependendAxisName(Result first, Result second) {
370
061355435075 Changed depending value for gap detection in verticalprofile charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
619 return "KPOSITION";
340
07a64cfafdf1 Added gap detection in horizontal and vertical profile charts. Distinguish between meshes and other data sources.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 335
diff changeset
620 }
298
80f7c5dc09c6 Implementation of classes for creating timeseries, verticalprofile and horizontalprofile charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
621 }
315
63f8b3fb7d9a Localization of chart axis with locale which fits best to server and browser settings.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 310
diff changeset
622 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org