Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveGenerator.java @ 2240:e9173de1026c
The HistoricalDischargeCurveGenerator now creates new AxisDataset objects and new TimeSeriesCollections for each Facet.
flys-artifacts/trunk@3887 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 02 Feb 2012 16:39:50 +0000 |
parents | 958a10e2e246 |
children | d70a04cad84d |
comparison
equal
deleted
inserted
replaced
2239:e7843533f086 | 2240:e9173de1026c |
---|---|
1 package de.intevation.flys.exports; | 1 package de.intevation.flys.exports; |
2 | 2 |
3 import java.awt.Font; | 3 import java.awt.Font; |
4 import java.util.Date; | |
4 | 5 |
5 import org.w3c.dom.Document; | 6 import org.w3c.dom.Document; |
6 | 7 |
7 import org.apache.log4j.Logger; | 8 import org.apache.log4j.Logger; |
8 | 9 |
9 import org.jfree.chart.JFreeChart; | 10 import org.jfree.chart.JFreeChart; |
10 import org.jfree.chart.axis.NumberAxis; | 11 import org.jfree.chart.axis.NumberAxis; |
11 | 12 |
13 import org.jfree.data.general.SeriesException; | |
14 import org.jfree.data.time.Minute; | |
15 import org.jfree.data.time.RegularTimePeriod; | |
16 import org.jfree.data.time.TimeSeries; | |
17 import org.jfree.data.time.TimeSeriesCollection; | |
18 | |
12 import de.intevation.artifactdatabase.state.ArtifactAndFacet; | 19 import de.intevation.artifactdatabase.state.ArtifactAndFacet; |
13 | 20 |
14 import de.intevation.flys.artifacts.FLYSArtifact; | 21 import de.intevation.flys.artifacts.FLYSArtifact; |
15 import de.intevation.flys.artifacts.model.FacetTypes; | 22 import de.intevation.flys.artifacts.model.FacetTypes; |
23 import de.intevation.flys.artifacts.model.Timerange; | |
24 import de.intevation.flys.artifacts.model.WQTimerange; | |
16 | 25 |
17 | 26 |
18 /** | 27 /** |
19 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 28 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
20 */ | 29 */ |
133 Document theme, | 142 Document theme, |
134 boolean visible) | 143 boolean visible) |
135 { | 144 { |
136 logger.debug("doHistoricalDischargeOut(): description = " + desc); | 145 logger.debug("doHistoricalDischargeOut(): description = " + desc); |
137 logger.warn("TODO IMPLEMENT ME"); | 146 logger.warn("TODO IMPLEMENT ME"); |
147 | |
148 WQTimerange wqt = (WQTimerange) data; | |
149 | |
150 TimeSeriesCollection tsc = newTimeSeriesCollection(wqt, desc); | |
151 | |
152 addAxisDataset(tsc, 0, visible); | |
153 } | |
154 | |
155 | |
156 /** | |
157 * Creates a new TimeSeriesCollection with a single TimeSeries. The | |
158 * TimeSeries will consist of two RegularTimePeriods for each W/Q value | |
159 * provided by <i>wqt</i>. This has the effect, that the line in the chart | |
160 * looks like a "step chart". | |
161 */ | |
162 protected TimeSeriesCollection newTimeSeriesCollection( | |
163 WQTimerange wqt, | |
164 String desc | |
165 ) { | |
166 logger.debug("Create new TimeSeriesCollection for: " + desc); | |
167 | |
168 TimeSeriesCollection tsc = new TimeSeriesCollection(); | |
169 TimeSeries series = new TimeSeries(desc); | |
170 | |
171 Timerange tr = null; | |
172 double[] res = new double[2]; | |
173 | |
174 for (int i = 0, n = wqt.size(); i < n; i++) { | |
175 res = wqt.get(i, res); | |
176 | |
177 RegularTimePeriod[] rtp = newRegularTimePeriod(wqt.getTimerange(i)); | |
178 | |
179 try { | |
180 // TODO WHICH (W/Q) IS REQUIRED? | |
181 series.add(rtp[0], res[1]); | |
182 series.add(rtp[1], res[1]); | |
183 } | |
184 catch (SeriesException se) { | |
185 logger.warn("Error while adding TimePeriod: " + se); | |
186 } | |
187 } | |
188 | |
189 tsc.addSeries(series); | |
190 | |
191 return tsc; | |
192 } | |
193 | |
194 | |
195 /** | |
196 * Creates an array that consists of two <i>Minute</i> periods [start, end]. | |
197 * | |
198 * @param timerange Supports start and end time. | |
199 * | |
200 * @return an array with two <i>Minute</i> periods [start, end]. | |
201 */ | |
202 protected RegularTimePeriod[] newRegularTimePeriod(Timerange timerange) { | |
203 Date start = new Date(timerange.getStart()); | |
204 Date end = new Date(timerange.getEnd() - 1000 * 60); | |
205 | |
206 return new RegularTimePeriod[] { | |
207 new Minute(start), | |
208 new Minute(end) | |
209 }; | |
138 } | 210 } |
139 } | 211 } |
140 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 212 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |