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