Mercurial > dive4elements > gnv-client
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 : |