annotate flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java @ 3242:1dca41dba135

Move annotation code to base class ChartGenerator flys-artifacts/trunk@4874 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Christian Lins <christian.lins@intevation.de>
date Wed, 04 Jul 2012 22:28:44 +0000
parents b0eee4c1eaa0
children c27c4e06dd87
rev   line source
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
3 import java.awt.Color;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
4 import java.awt.Font;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
5 import java.awt.Paint;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
6 import java.util.ArrayList;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
7 import java.util.Date;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
8 import java.util.HashMap;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
9 import java.util.List;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
10 import java.util.Map;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
11
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
12 import org.apache.log4j.Logger;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
13 import org.jfree.chart.ChartFactory;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
14 import org.jfree.chart.JFreeChart;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
15 import org.jfree.chart.annotations.XYTextAnnotation;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
16 import org.jfree.chart.axis.ValueAxis;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
17 import org.jfree.chart.plot.Marker;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
18 import org.jfree.chart.plot.XYPlot;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
19 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
20 import org.jfree.data.Range;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
21 import org.jfree.data.general.Series;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
22 import org.jfree.data.time.Day;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
23 import org.jfree.data.time.TimeSeries;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
24 import org.jfree.data.time.TimeSeriesCollection;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
25 import org.jfree.data.xy.XYDataset;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
26 import org.jfree.ui.Layer;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
27 import org.json.JSONArray;
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
28 import org.json.JSONException;
3242
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
29 import org.w3c.dom.Document;
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
30
3242
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
31 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
32 import de.intevation.flys.jfree.Bounds;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
33 import de.intevation.flys.jfree.CollisionFreeXYTextAnnotation;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
34 import de.intevation.flys.jfree.DoubleBounds;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
35 import de.intevation.flys.jfree.FLYSAnnotation;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
36 import de.intevation.flys.jfree.StyledTimeSeries;
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
37 import de.intevation.flys.jfree.TimeBounds;
3139
5888c4685701 Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3134
diff changeset
38
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 /**
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 public abstract class TimeseriesChartGenerator extends ChartGenerator {
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
44
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
45 /**
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
46 * Inner class TimeseriesAxisDataset stores TimeSeriesCollection.
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
47 */
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
48 public class TimeseriesAxisDataset implements AxisDataset {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
49
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
50 protected int axisSymbol;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
51
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
52 protected List<TimeSeriesCollection> datasets;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
53
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
54 protected Range range;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
55
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
56 protected int plotAxisIndex;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
57
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
58 public TimeseriesAxisDataset(int axisSymbol) {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
59 this.axisSymbol = axisSymbol;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
60 this.datasets = new ArrayList<TimeSeriesCollection>();
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
61 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
62
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
63
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
64 @Override
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
65 public void addDataset(XYDataset dataset) {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
66 if (!(dataset instanceof TimeSeriesCollection)) {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
67 logger.warn("Skip non TimeSeriesCollection dataset.");
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
68 return;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
69 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
70
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
71 TimeSeriesCollection tsc = (TimeSeriesCollection) dataset;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
72
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
73 datasets.add(tsc);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
74 mergeRanges(tsc);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
75 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
76
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
77
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
78 @Override
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
79 public XYDataset[] getDatasets() {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
80 return (XYDataset[])
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
81 datasets.toArray(new XYDataset[datasets.size()]);
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
82 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
83
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
84
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
85 @Override
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
86 public boolean isEmpty() {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
87 return datasets.isEmpty();
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
88 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
89
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
90
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
91 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
92 public void setRange(Range range) {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
93 this.range = range;
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
94 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
95
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
96
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
97 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
98 public Range getRange() {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
99 return range;
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
100 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
101
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
102
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
103 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
104 public void setPlotAxisIndex(int plotAxisIndex) {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
105 this.plotAxisIndex = plotAxisIndex;
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
106 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
107
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
108
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
109 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
110 public int getPlotAxisIndex() {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
111 return plotAxisIndex;
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
112 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
113
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
114
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
115 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
116 public boolean isArea(XYDataset dataset) {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
117 logger.warn("This AxisDataset doesn't support Areas yet!");
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
118 return false;
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
119 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
120
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
121
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
122 protected void mergeRanges(TimeSeriesCollection dataset) {
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
123 logger.debug("Range before merging: " + range);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
124 Range subRange = null;
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
125
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
126 // Determine min/max of range axis.
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
127 for (int i = 0; i < dataset.getSeriesCount(); i++) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
128 double min = 0;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
129 double max = 0;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
130 TimeSeries series = dataset.getSeries(i);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
131 for (int j = 0; j < series.getItemCount(); j++) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
132 double tmp = series.getValue(j).doubleValue();
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
133 min = tmp < min ? tmp : min;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
134 max = tmp > max ? tmp : max;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
135 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
136 if (subRange != null) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
137 subRange = new Range(
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
138 min < subRange.getLowerBound() ?
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
139 min : subRange.getLowerBound(),
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
140 max > subRange.getUpperBound() ?
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
141 max : subRange.getUpperBound());
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
142 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
143 else {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
144 subRange = new Range(min, max);
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
145 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
146 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
147
3236
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
148 // Avoid merging NaNs, as they take min/max place forever.
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
149 if (subRange == null ||
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
150 Double.isNaN(subRange.getLowerBound()) ||
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
151 Double.isNaN(subRange.getUpperBound())) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
152 return;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
153 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
154 if (range == null) {
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
155 range = subRange;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
156 return;
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
157 }
b0eee4c1eaa0 Implemented mergeRanges to combine y bounds in timeseries charts.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3227
diff changeset
158 range = Range.combine(range, subRange);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
159 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
160
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
161 } // end of TimeseriesAxisDataset class
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
162
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
163 protected List<Marker> domainMarker;
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
164
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
165 protected List<Marker> valueMarker;
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
166
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
167 protected Map<String, String> attributes;
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
168
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
169 protected boolean domainZeroLineVisible;
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
170
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 private static final Logger logger =
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 Logger.getLogger(TimeseriesChartGenerator.class);
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
175 public static final int AXIS_SPACE = 5;
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
176
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
177
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
178 protected Map<Integer, Bounds> xBounds;
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
179
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
180 protected Map<Integer, Bounds> yBounds;
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
181
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
182
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
183
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
184 /**
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
185 * The default constructor that initializes internal datastructures.
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
186 */
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
187 public TimeseriesChartGenerator() {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
188 super();
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
189
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
190 xBounds = new HashMap<Integer, Bounds>();
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
191 yBounds = new HashMap<Integer, Bounds>();
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
192 domainMarker = new ArrayList<Marker>();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
193 valueMarker = new ArrayList<Marker>();
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
194 attributes = new HashMap<String, String>();
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
195 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
196
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 @Override
2234
46ec09c7f578 Refactoring: moved more base code from XYChartGenerator into its parent class ChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2233
diff changeset
200 public JFreeChart generateChart() {
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 logger.info("Generate Timeseries Chart.");
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
203 JFreeChart chart = ChartFactory.createTimeSeriesChart(
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
204 getChartTitle(),
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
205 getXAxisLabel(),
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
206 getYAxisLabel(0),
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
207 null,
2554
ee5eca3871cb Apply legend specific settings (show/hide) in timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2553
diff changeset
208 isLegendVisible(),
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
209 false,
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
210 false);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
211
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
212 XYPlot plot = (XYPlot) chart.getPlot();
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
213
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
214 chart.setBackgroundPaint(Color.WHITE);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
215 plot.setBackgroundPaint(Color.WHITE);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
216
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
217 addSubtitles(chart);
2553
c7b0dfa6a52c Some refactoring in chart creation; timeseries charts are now able to apply plot specific settings as well.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2400
diff changeset
218 adjustPlot(plot);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
219 addDatasets(plot);
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
220 adjustAxes(plot);
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
221 addDomainAxisMarker(plot);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
222 addValueAxisMarker(plot);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
223 adaptZoom(plot);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
224
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
225 applySeriesAttributes(plot);
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
226 addAnnotationsToRenderer(plot);
3185
f1e4b37dcb60 Enable legend item aggreation in time series charts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3168
diff changeset
227 aggregateLegendEntries(plot);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
228 return chart;
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
229 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
230
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
231
2242
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
232 @Override
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
233 protected Series getSeriesOf(XYDataset dataset, int idx) {
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
234 return ((TimeSeriesCollection) dataset).getSeries(idx);
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
235 }
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
236
7e8e1d5384c0 Further refactoring of XYChartGenerator / ChartGenerator with the result, that timerange charts are now able to display lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2238
diff changeset
237
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
238 /**
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
239 * This method creates new instances of TimeseriesAxisDataset.
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
240 *
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
241 * @param idx The symbol for the new TimeseriesAxisDataset.
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
242 */
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
243 @Override
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
244 protected AxisDataset createAxisDataset(int idx) {
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
245 logger.debug("Create a new AxisDataset for index: " + idx);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
246 return new TimeseriesAxisDataset(idx);
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
247 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
248
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
249
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
250 @Override
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
251 protected void combineXBounds(Bounds bounds, int index) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
252 if (bounds != null) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
253 Bounds old = getXBounds(index);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
254
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
255 if (old != null) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
256 bounds = bounds.combine(old);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
257 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
258
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
259 setXBounds(index, bounds);
2238
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
260 }
23c7c51df772 Some more refactoring in XYChartGenerator and ChartGenerator; implemented necessary stuff in TimeseriesChartGenerator and return new empty instances of timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2236
diff changeset
261 }
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
262
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
263
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
264 @Override
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
265 protected void combineYBounds(Bounds bounds, int index) {
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
266 if (bounds != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
267 Bounds old = getYBounds(index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
268
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
269 if (old != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
270 bounds = bounds.combine(old);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
271 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
272
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
273 setYBounds(index, bounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
274 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
275 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
276
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
277
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
278 // TODO REPLACE THIS METHOD WITH getBoundsForAxis(index)
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
279 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
280 public Range[] getRangesForAxis(int index) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
281 // TODO
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
282 Bounds[] bounds = getBoundsForAxis(index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
283
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
284 return new Range[] {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
285 new Range(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
286 bounds[0].getLower().doubleValue(),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
287 bounds[0].getUpper().doubleValue()),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
288 new Range(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
289 bounds[1].getLower().doubleValue(),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
290 bounds[1].getUpper().doubleValue())
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
291 };
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
292 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
293
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
294
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
295 @Override
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
296 public Bounds getXBounds(int axis) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
297 return xBounds.get(axis);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
298 }
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
299
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
300
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
301 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
302 protected void setXBounds(int axis, Bounds bounds) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
303 xBounds.put(axis, bounds);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
304 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
305
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
306
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
307 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
308 public Bounds getYBounds(int axis) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
309 return yBounds.get(axis);
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
310 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
311
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
312
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
313 @Override
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
314 protected void setYBounds(int axis, Bounds bounds) {
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
315 if (bounds != null) {
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
316 yBounds.put(axis, bounds);
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
317 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
318 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
319
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
320
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
321 public Bounds[] getBoundsForAxis(int index) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
322 logger.debug("Return x and y bounds for axis at: " + index);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
323
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
324 Bounds rx = getXBounds(Integer.valueOf(index));
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
325 Bounds ry = getYBounds(Integer.valueOf(index));
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
326
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
327 if (rx == null) {
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
328 logger.warn("Range for x axis not set." +
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
329 " Using default values: 0 - 1.");
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
330 rx = new TimeBounds(0l, 1l);
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
331 }
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
332
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
333 if (ry == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
334 logger.warn("Range for y axis not set." +
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
335 " Using default values: 0 - 1.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
336 ry = new DoubleBounds(0l, 1l);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
337 }
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
338
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
339 logger.debug("X Bounds at index " + index + " is: " + rx);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
340 logger.debug("Y Bounds at index " + index + " is: " + ry);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
341
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
342 return new Bounds[] {rx, ry};
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
343 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
344
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
345
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
346 public Bounds getDomainAxisRange() {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
347 String[] ranges = getDomainAxisRangeFromRequest();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
348
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
349 if (ranges == null || ranges.length < 2) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
350 logger.debug("No zoom range for domain axis specified.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
351 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
352 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
353
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
354 if (ranges[0] == null || ranges[1] == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
355 logger.warn("Invalid ranges for domain axis specified!");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
356 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
357 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
358
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
359 try {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
360 double lower = Double.parseDouble(ranges[0]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
361 double upper = Double.parseDouble(ranges[1]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
362
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
363 return new DoubleBounds(lower, upper);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
364 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
365 catch (NumberFormatException nfe) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
366 logger.warn("Invalid ranges for domain axis specified: " + nfe);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
367 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
368
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
369 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
370 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
371
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
372
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
373 public Bounds getValueAxisRange() {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
374 String[] ranges = getValueAxisRangeFromRequest();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
375
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
376 if (ranges == null || ranges.length < 2) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
377 logger.debug("No zoom range for domain axis specified.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
378 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
379 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
380
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
381 if (ranges[0] == null || ranges[1] == null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
382 logger.warn("Invalid ranges for domain axis specified!");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
383 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
384 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
385
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
386 try {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
387 double lower = Double.parseDouble(ranges[0]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
388 double upper = Double.parseDouble(ranges[1]);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
389
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
390 return new DoubleBounds(lower, upper);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
391 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
392 catch (NumberFormatException nfe) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
393 logger.warn("Invalid ranges for domain axis specified: " + nfe);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
394 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
395
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
396 return null;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
397 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
398
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
399
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
400 protected void adaptZoom(XYPlot plot) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
401 logger.debug("Adapt zoom of Timeseries chart.");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
402
2587
bece6f604899 Removed references to Range and replaced those with references to Bounds in ChartGenerators.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2586
diff changeset
403 zoomX(plot, plot.getDomainAxis(), getXBounds(0), getDomainAxisRange());
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
404
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
405 Bounds valueAxisBounds = getValueAxisRange();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
406
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
407 for (int j = 0, n = plot.getRangeAxisCount(); j < n; j++) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
408 zoomY(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
409 plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
410 plot.getRangeAxis(j),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
411 getYBounds(j),
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
412 valueAxisBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
413 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
414 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
415
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
416
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
417 protected void zoomX(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
418 XYPlot plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
419 ValueAxis axis,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
420 Bounds total,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
421 Bounds user
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
422 ) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
423 if (logger.isDebugEnabled()) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
424 logger.debug("== Zoom X axis ==");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
425 logger.debug(" Total axis range : " + total);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
426 logger.debug(" User defined range: " + user);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
427 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
428
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
429 if (user != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
430 long min = total.getLower().longValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
431 long max = total.getUpper().longValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
432 long diff = max > min ? max - min : min - max;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
433
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
434 long newMin = (long) Math.round(min + user.getLower().doubleValue() * diff);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
435 long newMax = (long) Math.round(min + user.getUpper().doubleValue() * diff);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
436
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
437 TimeBounds newBounds = new TimeBounds(newMin, newMax);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
438
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
439 logger.debug(" Zoom axis to: " + newBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
440
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
441 newBounds.applyBounds(axis, AXIS_SPACE);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
442 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
443 else {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
444 logger.debug("No user specified zoom values found!");
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
445 if (total != null && axis != null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
446 total.applyBounds(axis, AXIS_SPACE);
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
447 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
448 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
449 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
450
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
451
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
452 protected void zoomY(
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
453 XYPlot plot,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
454 ValueAxis axis,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
455 Bounds total,
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
456 Bounds user
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
457 ) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
458 if (logger.isDebugEnabled()) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
459 logger.debug("== Zoom Y axis ==");
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
460 logger.debug(" Total axis range : " + total);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
461 logger.debug(" User defined range: " + user);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
462 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
463
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
464 if (user != null) {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
465 double min = total.getLower().doubleValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
466 double max = total.getUpper().doubleValue();
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
467 double diff = max > min ? max - min : min - max;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
468
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
469 double newMin = min + user.getLower().doubleValue() * diff;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
470 double newMax = min + user.getUpper().doubleValue() * diff;
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
471
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
472 DoubleBounds newBounds = new DoubleBounds(newMin, newMax);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
473
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
474 logger.debug(" Zoom axis to: " + newBounds);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
475
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
476 newBounds.applyBounds(axis, AXIS_SPACE);
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
477 }
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
478 else {
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
479 logger.debug("No user specified zoom values found!");
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
480 if (total != null && axis != null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
481 total.applyBounds(axis, AXIS_SPACE);
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
482 }
2400
f55984858952 Enabled zooming for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
483 }
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2242
diff changeset
484 }
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
485
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
486
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
487 /**
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
488 * Adjusts the axes of a plot. This method sets the <i>labelFont</i> of the
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
489 * X axis.
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
490 *
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
491 * @param plot The XYPlot of the chart.
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
492 */
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
493 protected void adjustAxes(XYPlot plot) {
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
494 ValueAxis xaxis = plot.getDomainAxis();
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
495
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
496 ChartSettings chartSettings = getChartSettings();
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
497 if (chartSettings == null) {
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
498 return;
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
499 }
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
500
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
501 Font labelFont = new Font(
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
502 DEFAULT_FONT_NAME,
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
503 Font.BOLD,
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
504 getXAxisLabelFontSize());
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
505
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
506 xaxis.setLabelFont(labelFont);
2590
d75b427da50a #522 Modified axes creation: label and tick label fonts will now always be the same.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2587
diff changeset
507 xaxis.setTickLabelFont(labelFont);
2586
8cd6358eb7f8 Enabeld axes label font sizes for timeseries charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2554
diff changeset
508 }
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
509
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
510
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
511 /**
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
512 * Do Points out.
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
513 */
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
514 protected void doPoints(
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
515 Object o,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
516 ArtifactAndFacet aandf,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
517 Document theme,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
518 boolean visible,
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
519 int axisIndex
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
520 ) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
521 String seriesName = aandf.getFacetDescription();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
522 TimeSeries series = new StyledTimeSeries(seriesName, theme);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
523
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
524 // Add text annotations for single points.
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
525 List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
526 HashMap<Day, String> names = new HashMap<Day, String>();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
527
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
528 try {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
529 JSONArray points = new JSONArray((String) o);
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2636
diff changeset
530 for (int i = 0, P = points.length(); i < P; i++) {
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
531 JSONArray array = points.getJSONArray(i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
532 double x = array.getDouble(0);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
533 double y = array.getDouble(1);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
534 String name = array.getString(2);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
535 boolean act = array.getBoolean(3);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
536 if (!act) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
537 continue;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
538 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
539 long l = (new Double(x)).longValue();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
540 Date date = new Date(l);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
541 Day day = new Day(date);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
542 series.add(day, y, false);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
543 names.put(day, name);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
544 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
545 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
546 catch(JSONException e){
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
547 logger.error("Could not decode json.");
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
548 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
549
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
550 TimeSeriesCollection tsc = new TimeSeriesCollection();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
551 tsc.addSeries(series);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
552 // Add Annotations.
3087
4a76da133144 Removed repeated x.size() calls from for loops.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2636
diff changeset
553 for (int i = 0, S = series.getItemCount(); i < S; i++) {
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
554 double x = tsc.getXValue(0, i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
555 double y = tsc.getYValue(0, i);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
556 xy.add(new CollisionFreeXYTextAnnotation(
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
557 names.get(series.getTimePeriod(i)), x, y));
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
558 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
559 FLYSAnnotation annotations =
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
560 new FLYSAnnotation(null, null, null, theme);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
561 annotations.setTextAnnotations(xy);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
562
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
563 // Do not generate second legend entry. (null was passed for the aand before).
2634
fa015cf5c0af Fixed duplicated legend entry for manual points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2633
diff changeset
564 doAnnotations(annotations, null, theme, visible);
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
565
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
566 addAxisDataset(tsc, axisIndex, visible);
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
567 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
568
3242
1dca41dba135 Move annotation code to base class ChartGenerator
Christian Lins <christian.lins@intevation.de>
parents: 3236
diff changeset
569 /** Get color for hyk zones by their type (which is the name). */
3212
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
570 public Paint colorForHYKZone(String zoneName) {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
571 if (zoneName.startsWith("R")) {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
572 // Brownish.
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
573 return new Color(153, 60, 0);
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
574 }
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
575 else if (zoneName.startsWith("V")) {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
576 // Greenish.
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
577 return new Color(0, 255, 0);
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
578 }
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
579 else if (zoneName.startsWith("B")) {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
580 // Grayish.
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
581 return new Color(128, 128, 128);
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
582 }
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
583 else if (zoneName.startsWith("H")) {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
584 // Blueish.
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
585 return new Color(0, 0, 255);
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
586 }
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
587 else {
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
588 // Default.
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
589 logger.debug("Unknown zone type found.");
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
590 return new Color(255, 0, 0);
abc2db630815 Work in generalized annotations for chart generators
Christian Lins <christian.lins@intevation.de>
parents: 3185
diff changeset
591 }
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
592 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
593
3130
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
594 public void addDomainAxisMarker(XYPlot plot) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
595 logger.debug("domainmarkers: " + domainMarker.size());
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
596 for (Marker marker: domainMarker) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
597 logger.debug("adding domain marker");
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
598 plot.addDomainMarker(marker, Layer.BACKGROUND);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
599 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
600 domainMarker.clear();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
601 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
602
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
603 public void addValueAxisMarker(XYPlot plot) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
604 for (Marker marker: valueMarker) {
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
605 logger.debug("adding value marker..");
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
606 plot.addRangeMarker(marker, Layer.BACKGROUND);
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
607 }
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
608 valueMarker.clear();
0dd569e9b9f1 Added new methods to add domain and value axis markers to time series plots.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3087
diff changeset
609 }
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
610
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
611 public void addAttribute(String seriesKey, String name) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
612 attributes.put(seriesKey, name);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
613 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
614
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
615 protected void applySeriesAttributes(XYPlot plot) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
616 int count = plot.getDatasetCount();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
617 for (int i = 0; i < count; i++) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
618 XYDataset data = plot.getDataset(i);
3140
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
619 if (data == null) {
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
620 continue;
3d456d8bca6e TimeseriesChartGenerator: Prevent some NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3139
diff changeset
621 }
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
622 int seriesCount = data.getSeriesCount();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
623 for (int j = 0; j < seriesCount; j++) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
624 StyledTimeSeries series =
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
625 (StyledTimeSeries)getSeriesOf(data, j);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
626 String key = series.getKey().toString();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
627 if (attributes.containsKey(key)) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
628 if (attributes.get(key).equals("interpolate")) {
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
629 XYLineAndShapeRenderer renderer =
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
630 series.getStyle().getRenderer();
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
631 renderer.setSeriesPaint(
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
632 j,
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
633 renderer.getSeriesFillPaint(j));
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
634 renderer.setSeriesShapesFilled(j, false);
3168
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
635 }
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
636 }
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
637 if (attributes.containsKey(key)) {
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
638 if(attributes.get(key).equals("outline")) {
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
639 XYLineAndShapeRenderer renderer =
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
640 series.getStyle().getRenderer();
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
641 renderer.setSeriesPaint(
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
642 j,
e10323bf3cbc Look for the attribut "outline" in TimeseriesChartGenerator to render shape
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3140
diff changeset
643 renderer.getSeriesFillPaint(j));
3134
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
644 renderer.setDrawOutlines(true);
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
645 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
646 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
647 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
648 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
649 }
5a0aef74c316 Use different stylings for real and interpolated data points.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3130
diff changeset
650
2633
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
651 /** Two Ranges that span a rectangular area. */
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
652 public static class Area {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
653 protected Range xRange;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
654 protected Range yRange;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
655
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
656 public Area(Range rangeX, Range rangeY) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
657 this.xRange = rangeX;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
658 this.yRange = rangeY;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
659 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
660
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
661 public Area(ValueAxis axisX, ValueAxis axisY) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
662 this.xRange = axisX.getRange();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
663 this.yRange = axisY.getRange();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
664 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
665
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
666 public double ofLeft(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
667 return xRange.getLowerBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
668 + xRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
669 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
670
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
671 public double ofRight(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
672 return xRange.getUpperBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
673 - xRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
674 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
675
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
676 public double ofGround(double percent) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
677 return yRange.getLowerBound()
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
678 + yRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
679 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
680
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
681 public double atTop() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
682 return yRange.getUpperBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
683 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
684
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
685 public double atGround() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
686 return yRange.getLowerBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
687 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
688
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
689 public double atRight() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
690 return xRange.getUpperBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
691 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
692
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
693 public double atLeft() {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
694 return xRange.getLowerBound();
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
695 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
696
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
697 public double above(double percent, double base) {
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
698 return base + yRange.getLength() * percent;
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
699 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
700 }
894186b4c1d0 Issue 494.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2590
diff changeset
701
2233
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
702 }
958a10e2e246 Added a new ChartGenerator for timeseries charts and refactored some code in XYChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
703 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org