Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartHelper.java @ 7994:3c1a16755e61 facet-metadata
Add meta data to middle bed height CSV export.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 02 Jul 2014 14:42:43 +0200 |
parents | af13ceeba52a |
children | e4606eae8ea5 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3269
diff
changeset
|
9 package org.dive4elements.river.exports; |
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
|
10 |
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
|
11 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
|
12 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:
2330
diff
changeset
|
13 import org.jfree.data.xy.XYSeriesCollection; |
2330
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
14 import org.jfree.data.time.RegularTimePeriod; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
15 import org.jfree.data.time.TimeSeriesCollection; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
16 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
|
17 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
18 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
|
19 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3269
diff
changeset
|
20 import org.dive4elements.river.jfree.Bounds; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3269
diff
changeset
|
21 import org.dive4elements.river.jfree.DoubleBounds; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3269
diff
changeset
|
22 import org.dive4elements.river.jfree.TimeBounds; |
2330
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
23 |
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
|
24 |
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 * @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
|
27 */ |
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 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
|
29 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
30 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
|
31 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
32 |
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
|
33 /** |
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
|
34 * 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
|
35 * 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
|
36 * |
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
|
37 * @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
|
38 * |
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 * @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
|
40 */ |
2587
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
41 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
|
42 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
|
43 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
44 if (seriesCount == 0) { |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
45 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
|
46 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
|
47 } |
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
|
48 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
49 boolean foundValue = false; |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
50 |
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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
56 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
|
57 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
|
58 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
|
59 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
|
60 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
61 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
|
62 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
|
63 continue; |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
64 } |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
65 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
66 foundValue = true; |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
67 |
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
|
68 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
|
69 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
|
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 (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
|
73 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
|
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 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
|
77 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
|
78 } |
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
|
79 |
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
|
80 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
|
81 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
|
82 } |
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
|
83 } |
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
|
84 } |
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
|
85 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
86 return foundValue |
2587
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
87 ? new Bounds[] { |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
88 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:
2330
diff
changeset
|
89 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
|
90 : null; |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
91 } |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
92 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
93 |
2587
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
94 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:
2330
diff
changeset
|
95 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:
2330
diff
changeset
|
96 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:
2330
diff
changeset
|
97 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
98 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:
2330
diff
changeset
|
99 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:
2330
diff
changeset
|
100 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
101 else { |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
102 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:
2330
diff
changeset
|
103 return null; |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
104 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
105 } |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
106 |
bece6f604899
Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2330
diff
changeset
|
107 |
2330
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
108 public static Bounds[] getBounds(TimeSeriesCollection collection) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
109 int seriesCount = collection != null ? collection.getSeriesCount() : 0; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
110 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
111 if (seriesCount == 0) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
112 logger.warn("TimeSeriesCollection is empty or has no Series set."); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
113 return null; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
114 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
115 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
116 boolean foundValue = false; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
117 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
118 long lowerX = Long.MAX_VALUE; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
119 long upperX = -Long.MAX_VALUE; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
120 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
121 double lowerY = Double.MAX_VALUE; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
122 double upperY = -Double.MAX_VALUE; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
123 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
124 for (int i = 0, m = seriesCount; i < m; i++) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
125 TimeSeries series = collection.getSeries(i); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
126 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
127 for (int j = 0, n = collection.getItemCount(i); j < n; j++) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
128 RegularTimePeriod rtp = series.getTimePeriod(j); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
129 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
130 if (rtp == null) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
131 continue; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
132 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
133 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
134 foundValue = true; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
135 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
136 long start = rtp.getFirstMillisecond(); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
137 long end = rtp.getLastMillisecond(); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
138 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
139 if (start < lowerX) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
140 lowerX = start; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
141 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
142 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
143 if (end > upperX) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
144 upperX = end; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
145 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
146 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
147 double y = series.getValue(j).doubleValue(); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
148 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
149 lowerY = Math.min(lowerY, y); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
150 upperY = Math.max(upperY, y); |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
151 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
152 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
153 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
154 if (foundValue) { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
155 return new Bounds[] { |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
156 new TimeBounds(lowerX, upperX), |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
157 new DoubleBounds(lowerY, upperY) |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
158 }; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
159 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
160 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
161 return null; |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
162 } |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
163 |
594885703687
Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2241
diff
changeset
|
164 |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
165 /** |
3247
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
166 * Expand bounds by percent. |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
167 * |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
168 * @param bounds The bounds to expand. |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
169 * @param percent The percentage to expand. |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
170 * |
3269
b2ea89a665bc
Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3247
diff
changeset
|
171 * @return a new, expanded bounds. |
3247
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 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
|
174 if (bounds == null) { |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
175 return null; |
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 double value = (Double) bounds.getLower(); |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
179 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
|
180 |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
181 return expand != 0 |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
182 ? new DoubleBounds(value-expand, value+expand) |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
183 : 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
|
184 } |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
185 |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
186 |
638b1da85450
New ChartHelper method to expand bounds added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2587
diff
changeset
|
187 /** |
2241
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
188 * Expand range by percent. |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
189 * |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
190 * @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
|
191 * @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
|
192 * |
3269
b2ea89a665bc
Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3247
diff
changeset
|
193 * @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
|
194 */ |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
195 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
|
196 if (range == null) { |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
197 return null; |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
198 } |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
199 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
200 double value = range.getLowerBound(); |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
201 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
|
202 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
203 return expand != 0 |
2b232871ba28
New helper functions in ChartHelper and improvements in EnhancedLineAndShapeRenderer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
2237
diff
changeset
|
204 ? 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
|
205 : 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
|
206 } |
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
|
207 } |
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
|
208 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |