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 :

http://dive4elements.wald.intevation.org