annotate flys-artifacts/src/main/java/de/intevation/flys/exports/ChartHelper.java @ 4798:39885bdfc6fc

Added calculation of the "Umhuellende" to calculation of "W fuer ungleichwertige Abfluesse". This is done by figuring out the WST columns that imfold the data and then do simple "gleichwertige" calculations from the start of the interval. This is too much because only the Qs are needed for the "Umhuellende".
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 13 Jan 2013 16:18:28 +0100
parents b2ea89a665bc
children
rev   line source
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import org.jfree.data.Range;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import org.jfree.data.xy.XYDataset;
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
5 import org.jfree.data.xy.XYSeriesCollection;
2394
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
6 import org.jfree.data.time.RegularTimePeriod;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
7 import org.jfree.data.time.TimeSeriesCollection;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
8 import org.jfree.data.time.TimeSeries;
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
10 import org.apache.log4j.Logger;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
11
2394
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
12 import de.intevation.flys.jfree.Bounds;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
13 import de.intevation.flys.jfree.DoubleBounds;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
14 import de.intevation.flys.jfree.TimeBounds;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
15
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 /**
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 */
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 public class ChartHelper {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
22 private static final Logger logger = Logger.getLogger(ChartHelper.class);
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
23
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
24
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 /**
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 * This method returns the ranges of the XYDataset <i>dataset</i> as array
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 * with [xrange, yrange].
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 *
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 * @param dataset The dataset which should be evaluated.
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 *
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 * @return an array with x and y ranges.
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 */
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
33 public static Bounds[] getBounds(XYSeriesCollection dataset) {
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
34 int seriesCount = dataset != null ? dataset.getSeriesCount() : 0;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
35
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
36 if (seriesCount == 0) {
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
37 logger.warn("Dataset is empty or has no Series set.");
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 return null;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
41 boolean foundValue = false;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
42
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 double minX = Double.MAX_VALUE;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 double maxX = -Double.MAX_VALUE;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 double minY = Double.MAX_VALUE;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 double maxY = -Double.MAX_VALUE;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
48 for (int i = 0, m = seriesCount; i < m; i++) {
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 for (int j = 0, n = dataset.getItemCount(i); j < n; j++) {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 double x = dataset.getXValue(i, j);
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 double y = dataset.getYValue(i, j);
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
53 if (Double.isNaN(x) || Double.isNaN(y)) {
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
54 logger.warn("Item " + j + " in Series " + i + " is broken");
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
55 continue;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
56 }
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
57
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
58 foundValue = true;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
59
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 if (x < minX) {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 minX = x;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 if (x > maxX) {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 maxX = x;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 if (y < minY) {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 minY = y;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 if (y > maxY) {
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 maxY = y;
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
78 return foundValue
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
79 ? new Bounds[] {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
80 new DoubleBounds(minX, maxX),
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
81 new DoubleBounds(minY, maxY) }
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
82 : null;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
83 }
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
84
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
85
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
86 public static Bounds[] getBounds(XYDataset dataset) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
87 if (dataset instanceof XYSeriesCollection) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
88 return getBounds((XYSeriesCollection) dataset);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
89 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
90 else if(dataset instanceof TimeSeriesCollection) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
91 return getBounds((TimeSeriesCollection) dataset);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
92 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
93 else {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
94 logger.warn("Unknown XYDataset instance: " + dataset.getClass());
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
95 return null;
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
96 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
97 }
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
98
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2394
diff changeset
99
2394
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
100 public static Bounds[] getBounds(TimeSeriesCollection collection) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
101 int seriesCount = collection != null ? collection.getSeriesCount() : 0;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
102
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
103 if (seriesCount == 0) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
104 logger.warn("TimeSeriesCollection is empty or has no Series set.");
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
105 return null;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
106 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
107
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
108 boolean foundValue = false;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
109
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
110 long lowerX = Long.MAX_VALUE;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
111 long upperX = -Long.MAX_VALUE;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
112
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
113 double lowerY = Double.MAX_VALUE;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
114 double upperY = -Double.MAX_VALUE;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
115
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
116 for (int i = 0, m = seriesCount; i < m; i++) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
117 TimeSeries series = collection.getSeries(i);
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
118
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
119 for (int j = 0, n = collection.getItemCount(i); j < n; j++) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
120 RegularTimePeriod rtp = series.getTimePeriod(j);
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
121
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
122 if (rtp == null) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
123 continue;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
124 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
125
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
126 foundValue = true;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
127
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
128 long start = rtp.getFirstMillisecond();
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
129 long end = rtp.getLastMillisecond();
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
130
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
131 if (start < lowerX) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
132 lowerX = start;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
133 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
134
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
135 if (end > upperX) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
136 upperX = end;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
137 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
138
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
139 double y = series.getValue(j).doubleValue();
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
140
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
141 lowerY = Math.min(lowerY, y);
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
142 upperY = Math.max(upperY, y);
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
143 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
144 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
145
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
146 if (foundValue) {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
147 return new Bounds[] {
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
148 new TimeBounds(lowerX, upperX),
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
149 new DoubleBounds(lowerY, upperY)
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
150 };
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
151 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
152
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
153 return null;
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
154 }
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
155
02ac373b6d69 Added chart helper function to determine the min and max bounds (x and y) for TimeSeriesCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2241
diff changeset
156
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
157 /**
3247
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
158 * Expand bounds by percent.
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
159 *
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
160 * @param bounds The bounds to expand.
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
161 * @param percent The percentage to expand.
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
162 *
3269
b2ea89a665bc Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3247
diff changeset
163 * @return a new, expanded bounds.
3247
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
164 */
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
165 public static Bounds expandBounds(Bounds bounds, double percent) {
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
166 if (bounds == null) {
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
167 return null;
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
168 }
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
169
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
170 double value = (Double) bounds.getLower();
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
171 double expand = Math.abs(value / 100 * percent);
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
172
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
173 return expand != 0
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
174 ? new DoubleBounds(value-expand, value+expand)
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
175 : new DoubleBounds(-0.01 * percent, 0.01 * percent);
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
176 }
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
177
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
178
638b1da85450 New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2587
diff changeset
179 /**
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
180 * Expand range by percent.
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
181 *
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
182 * @param range The range to expand.
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
183 * @param percent The percentage to expand.
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
184 *
3269
b2ea89a665bc Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3247
diff changeset
185 * @return a new, expanded range.
2241
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
186 */
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
187 public static Range expandRange(Range range, double percent) {
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
188 if (range == null) {
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
189 return null;
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
190 }
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
191
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
192 double value = range.getLowerBound();
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
193 double expand = Math.abs(value / 100 * percent);
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
194
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
195 return expand != 0
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
196 ? new Range(value-expand, value+expand)
2b232871ba28 New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2237
diff changeset
197 : new Range(-0.01 * percent, 0.01 * percent);
2237
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 }
60615235e951 Added a ChartHelper class that currently contains a method to compute the xy ranges of an XYDataset.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org