comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileVectorChart.java @ 1071:9bb1979aabbe

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

http://dive4elements.wald.intevation.org