annotate artifacts/src/main/java/org/dive4elements/river/jfree/AxisDataset.java @ 8856:5e38e2924c07 3.2.x

Fix code style.
author Tom Gottfried <tom@intevation.de>
date Thu, 18 Jan 2018 20:12:01 +0100
parents e4606eae8ea5
children a805211690f7
rev   line source
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 *
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 * XYDatasethis file is Free Software under the GNU AGPL (>=v3)
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUXYDatasetELY NO WARRANTY! Check out the
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7 */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.jfree;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import java.util.List;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 import java.util.ArrayList;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14 import org.jfree.data.Range;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15 import org.jfree.data.RangeInfo;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import org.jfree.data.xy.XYDataset;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import org.jfree.data.xy.XYSeries;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18 import org.jfree.data.xy.XYSeriesCollection;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 import org.jfree.data.time.TimeSeriesCollection;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21 import org.apache.log4j.Logger;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
22
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23 /**
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24 * Axis datasets.
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26 public class AxisDataset
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7088
diff changeset
28 private static Logger log = Logger.getLogger(AxisDataset.class);
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 /** Symbolic integer, but also coding the priority (0 goes first). */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 protected int axisSymbol;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 /** List of assigned datasets (in order). */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 protected List<XYDataset> datasets;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 /** Range to use to include all given datasets. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37 protected Range range;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39 /** Index of axis in plot. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 protected int plotAxisIndex;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42 protected boolean rangeDirty;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 /** Create AxisDataset. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 public AxisDataset(int symb) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46 axisSymbol = symb;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47 datasets = new ArrayList<XYDataset>();
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
48 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 /** Add a dataset to internal list for this axis. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 public void addDataset(XYDataset dataset) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 datasets.add(dataset);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 rangeDirty = true;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 /** Add a dataset. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 public void addDataset(XYSeries series) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 addDataset(new XYSeriesCollection(series));
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 public void setRange(Range val) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62 range = val;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 /** Get Range for the range axis of this dataset. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 public Range getRange() {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 if (range != null && !rangeDirty) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68 return range;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 /* Calculate the min / max of all series */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 for (XYDataset dataset: datasets) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 Range newRange = null;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73 if (dataset instanceof StyledAreaSeriesCollection) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
74 /* We do not include areas in the range calculation because
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
75 * they are used with very large / small values to draw areas
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
76 * with axis boundaries */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
77 continue;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
78 } else if (dataset instanceof RangeInfo) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
79 /* The usual case for most series */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80 newRange = ((RangeInfo) dataset).getRangeBounds(false);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81 } else if (dataset instanceof TimeSeriesCollection) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82 /* Lalala <3 Jfreechart's class hirarchy */
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
83 newRange = ((TimeSeriesCollection)dataset)
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
84 .getRangeBounds(false);
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
85 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87 /* Now we only expand as we also only add new data */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
88 if (range == null) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
89 range = newRange;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90 } else {
7038
59e477500a50 Use combine instead of combineignoringNaN (for compatibility)
Andre Heinecke <aheinecke@intevation.de>
parents: 7034
diff changeset
91 range = Range.combine(range, newRange);
7034
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
92 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
94 rangeDirty = false;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
95 return range;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
97
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
98 /** Get Array of Datasets. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
99 public XYDataset[] getDatasets() {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
100 return datasets.toArray(new XYDataset[datasets.size()]);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
101 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
102
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
103 /** True if to be rendered as area. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 public boolean isArea(XYDataset series) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105 return (series instanceof StyledAreaSeriesCollection);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
106 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
107
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
108 /** True if no datasets given. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
109 public boolean isEmpty() {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
110 return datasets.isEmpty();
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
111 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
112
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113 /** Set the 'real' axis index that this axis is mapped to. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
114 public void setPlotAxisIndex(int axisIndex) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
115 plotAxisIndex = axisIndex;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
117
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
118 /** Get the 'real' axis index that this axis is mapped to. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
119 public int getPlotAxisIndex() {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
120 return plotAxisIndex;
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
121 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
122
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
123 /** Add a Dataset that describes an area. */
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
124 public void addArea(StyledAreaSeriesCollection series) {
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
125 addDataset(series);
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
126 }
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
127
557cb3a3d772 Combine AxisDataset implementations and remove / simplify handling code.
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
128 }

http://dive4elements.wald.intevation.org