comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalProfileVectorChart.java @ 1074:649f564a5184

Implemented a new output state and chart type for horizontal profiles using vector data. gnv-artifacts/trunk@1174 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 08 Jun 2010 13:00:58 +0000
parents
children f953c9a559d8
comparison
equal deleted inserted replaced
1073:902bcd837995 1074:649f564a5184
1 package de.intevation.gnv.chart;
2
3 import de.intevation.gnv.geobackend.base.Result;
4 import de.intevation.gnv.geobackend.base.ResultDescriptor;
5
6 import java.util.Collection;
7 import java.util.Iterator;
8 import java.util.Locale;
9
10 import org.apache.log4j.Logger;
11
12 import org.jfree.chart.ChartTheme;
13
14 import org.jfree.chart.plot.XYPlot;
15
16 import org.jfree.data.xy.XYSeries;
17 import org.jfree.data.xy.XYSeriesCollection;
18
19 /**
20 * This class is used to create xy charts of vertical profiles.
21 *
22 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
23 */
24 public class HorizontalProfileVectorChart
25 extends HorizontalProfileChart
26 {
27 private static Logger logger =
28 Logger.getLogger(HorizontalProfileVectorChart.class);
29
30
31 public HorizontalProfileVectorChart(
32 ChartLabels labels,
33 ChartTheme theme,
34 Collection parameters,
35 Collection measurements,
36 Collection dates,
37 Collection result,
38 Collection timeGaps,
39 Locale locale,
40 boolean linesVisible,
41 boolean shapesVisible
42 ) {
43 super(labels, theme, parameters, measurements, dates, result,
44 timeGaps, locale, linesVisible, shapesVisible);
45 }
46
47
48 @Override
49 protected void initData() {
50 Iterator iter = resultSet.iterator();
51 Result row = null;
52 String seriesName = null;
53 XYSeries series = null;
54
55 int idx = 0;
56 int startPos = 0;
57 int endPos = 0;
58
59 double startValue = 0;
60 double endValue = 0;
61
62 ResultDescriptor rd = null;
63 int idxSeries = -1;
64 int idxX = -1;
65 int idxY = -1;
66
67 Result[] results =
68 (Result[]) resultSet.toArray(new Result[resultSet.size()]);
69
70 while (iter.hasNext()) {
71 row = (Result) iter.next();
72
73 if (rd == null) {
74 rd = row.getResultDescriptor();
75 idxSeries = rd.getColumnIndex("SERIES");
76 idxX = rd.getColumnIndex("XORDINATE");
77 idxY = rd.getColumnIndex("YORDINATE");
78 }
79
80 if (!row.getString(idxSeries).equals(seriesName)) {
81 logger.debug("prepare data/plot for next dataset.");
82
83 if (series != null) {
84 gapDetection(results, series, startPos, endPos);
85 addSeries(series, seriesName, idx);
86
87 startPos = endPos + 1;
88 }
89
90 seriesName = row.getString(idxSeries);
91
92 logger.debug("next data is '" + seriesName + "'");
93 series = new XYSeries(seriesName);
94 }
95
96 addValue(row, series);
97 Object x = getValue(row);
98 Double y = row.getDouble(idxY);
99 if (x != null && y != null) {
100 storeMaxRange(ranges, y, seriesName);
101 storeMaxValue(values, x, seriesName);
102 }
103
104 endPos++;
105 }
106
107 if (results.length == 0)
108 return;
109
110 gapDetection(results, series, startPos, endPos);
111 addSeries(series, seriesName, idx);
112
113 addDatasets();
114 }
115
116
117 @Override
118 protected void addDatasets() {
119 XYPlot plot = chart.getXYPlot();
120 int idx = 0;
121
122 XYSeriesCollection sc = null;
123 Iterator iter = datasets.keySet().iterator();
124
125 while (iter.hasNext()) {
126 String key = (String) iter.next();
127 sc = (XYSeriesCollection)datasets.get(key);
128 plot.setDataset(idx, sc );
129 logger.debug("Added " + key + " parameter to plot.");
130 prepareAxis(key, idx);
131 adjustRenderer(
132 idx++,
133 sc.getSeriesCount(),
134 linesVisible,
135 shapesVisible
136 );
137 }
138 }
139 }
140 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org