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