comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileVectorChart.java @ 1119:7c4f81f74c47

merged gnv-artifacts
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:00 +0200
parents f953c9a559d8
children
comparison
equal deleted inserted replaced
1027:fca4b5eb8d2f 1119:7c4f81f74c47
1 /*
2 * Copyright (c) 2010 by Intevation GmbH
3 *
4 * This program is free software under the LGPL (>=v2.1)
5 * Read the file LGPL.txt coming with the software for details
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
7 */
8
9 package de.intevation.gnv.chart;
10
11 import de.intevation.gnv.geobackend.base.Result;
12 import de.intevation.gnv.geobackend.base.ResultDescriptor;
13
14 import java.util.Collection;
15 import java.util.Iterator;
16 import java.util.Locale;
17
18 import org.apache.log4j.Logger;
19
20 import org.jfree.chart.ChartTheme;
21
22 import org.jfree.chart.plot.XYPlot;
23
24 import org.jfree.data.xy.XYSeries;
25 import org.jfree.data.xy.XYSeriesCollection;
26
27 /**
28 * This class is used to create xy charts of vertical profiles.
29 *
30 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
31 */
32 public class VerticalProfileVectorChart
33 extends VerticalProfileChart
34 {
35 private static Logger logger =
36 Logger.getLogger(VerticalProfileVectorChart.class);
37
38 public VerticalProfileVectorChart(
39 ChartLabels labels,
40 ChartTheme theme,
41 Collection parameters,
42 Collection measurements,
43 Collection dates,
44 Collection result,
45 Collection timeGaps,
46 Locale locale,
47 boolean linesVisible,
48 boolean shapesVisible
49 ) {
50 super(labels, theme, parameters, measurements, dates, result,
51 timeGaps, locale, linesVisible, shapesVisible);
52 }
53
54
55 @Override
56 protected void initData() {
57 logger.debug("init data for verticalprofile chart with vector data.");
58
59 int items = resultSet.size();
60 logger.debug("Found " + items + " items for this chart.");
61
62 Iterator iter = resultSet.iterator();
63 Result row = null;
64 String seriesName = null;
65 XYSeries series = null;
66
67 int idx = 0;
68 int startPos = 0;
69 int endPos = 0;
70
71 double startValue = 0;
72 double endValue = 0;
73
74 ResultDescriptor rd = null;
75 int idxSeries = -1;
76 int idxX = -1;
77 int idxY = -1;
78
79 Result[] results =
80 (Result[]) resultSet.toArray(new Result[resultSet.size()]);
81
82 while (iter.hasNext()) {
83 row = (Result) iter.next();
84
85 if (rd == null) {
86 rd = row.getResultDescriptor();
87 idxSeries = rd.getColumnIndex("SERIES");
88 idxX = rd.getColumnIndex("XORDINATE");
89 idxY = rd.getColumnIndex("YORDINATE");
90 }
91
92 if (!row.getString(idxSeries).equals(seriesName)) {
93 logger.debug("prepare data/plot for next dataset.");
94
95 if (series != null) {
96 if (startPos >= 0 && endPos < items) {
97 gapDetection(results, series, startPos, endPos);
98 }
99
100 addSeries(series, seriesName, idx);
101
102 startPos = endPos + 1;
103 }
104
105 seriesName = row.getString(idxSeries);
106
107 logger.debug("next data is '" + seriesName + "'");
108 series = new XYSeries(seriesName);
109 }
110
111 addValue(row, series);
112 Object x = getValue(row);
113 Double y = row.getDouble(idxY);
114 if (x != null && y != null) {
115 storeMaxRange(ranges, y, seriesName);
116 storeMaxValue(values, x, seriesName);
117 }
118
119 endPos++;
120 }
121
122 if (results.length == 0)
123 return;
124
125 if (startPos >= 0 && endPos < items) {
126 gapDetection(results, series, startPos, endPos);
127 }
128 addSeries(series, seriesName, idx);
129
130 addDatasets();
131 }
132
133
134 @Override
135 protected void addDatasets() {
136 XYPlot plot = chart.getXYPlot();
137 int idx = 0;
138
139 XYSeriesCollection sc = null;
140 Iterator iter = datasets.keySet().iterator();
141
142 while (iter.hasNext()) {
143 String key = (String) iter.next();
144 sc = (XYSeriesCollection)datasets.get(key);
145 plot.setDataset(idx, sc );
146 logger.debug("Added " + key + " parameter to plot.");
147 prepareAxis(key, idx);
148 adjustRenderer(
149 idx++,
150 sc.getSeriesCount(),
151 linesVisible,
152 shapesVisible
153 );
154 }
155
156 prepareRangeAxis(null, -1);
157 }
158 }
159 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org