Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 217:3dcd2b0b456e
Added configurable TimeGap Support to the TimeSeries-Chart-Generation. issu45
gnv-artifacts/trunk@275 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Thu, 29 Oct 2009 15:58:47 +0000 |
parents | d87347142702 |
children | ee2d4134d0b3 |
comparison
equal
deleted
inserted
replaced
216:9db263ee2678 | 217:3dcd2b0b456e |
---|---|
7 import java.awt.Dimension; | 7 import java.awt.Dimension; |
8 import java.io.IOException; | 8 import java.io.IOException; |
9 import java.io.OutputStream; | 9 import java.io.OutputStream; |
10 import java.io.OutputStreamWriter; | 10 import java.io.OutputStreamWriter; |
11 import java.io.UnsupportedEncodingException; | 11 import java.io.UnsupportedEncodingException; |
12 import java.util.ArrayList; | |
12 import java.util.Collection; | 13 import java.util.Collection; |
13 import java.util.Iterator; | 14 import java.util.Iterator; |
14 | 15 import java.util.List; |
16 | |
17 import javax.xml.parsers.DocumentBuilderFactory; | |
18 import javax.xml.parsers.ParserConfigurationException; | |
15 import javax.xml.transform.Transformer; | 19 import javax.xml.transform.Transformer; |
16 import javax.xml.transform.TransformerConfigurationException; | 20 import javax.xml.transform.TransformerConfigurationException; |
17 import javax.xml.transform.TransformerException; | 21 import javax.xml.transform.TransformerException; |
18 import javax.xml.transform.TransformerFactory; | 22 import javax.xml.transform.TransformerFactory; |
19 import javax.xml.transform.TransformerFactoryConfigurationError; | 23 import javax.xml.transform.TransformerFactoryConfigurationError; |
22 | 26 |
23 import org.apache.log4j.Logger; | 27 import org.apache.log4j.Logger; |
24 import org.w3c.dom.Document; | 28 import org.w3c.dom.Document; |
25 import org.w3c.dom.Element; | 29 import org.w3c.dom.Element; |
26 import org.w3c.dom.Node; | 30 import org.w3c.dom.Node; |
31 import org.w3c.dom.NodeList; | |
32 import org.xml.sax.SAXException; | |
27 | 33 |
28 import au.com.bytecode.opencsv.CSVWriter; | 34 import au.com.bytecode.opencsv.CSVWriter; |
29 import de.intevation.artifactdatabase.Config; | 35 import de.intevation.artifactdatabase.Config; |
30 import de.intevation.artifactdatabase.XMLUtils; | 36 import de.intevation.artifactdatabase.XMLUtils; |
31 import de.intevation.artifacts.CallMeta; | 37 import de.intevation.artifacts.CallMeta; |
38 import de.intevation.gnv.geobackend.base.Result; | 44 import de.intevation.gnv.geobackend.base.Result; |
39 import de.intevation.gnv.statistics.Statistic; | 45 import de.intevation.gnv.statistics.Statistic; |
40 import de.intevation.gnv.statistics.Statistics; | 46 import de.intevation.gnv.statistics.Statistics; |
41 import de.intevation.gnv.statistics.TimeseriesStatistics; | 47 import de.intevation.gnv.statistics.TimeseriesStatistics; |
42 import de.intevation.gnv.statistics.exception.StatisticsException; | 48 import de.intevation.gnv.statistics.exception.StatisticsException; |
49 import de.intevation.gnv.timeseries.gap.DefaultTimeGap; | |
50 import de.intevation.gnv.timeseries.gap.TimeGap; | |
43 import de.intevation.gnv.transition.InputData; | 51 import de.intevation.gnv.transition.InputData; |
44 import de.intevation.gnv.transition.OutputTransitionBase; | 52 import de.intevation.gnv.transition.OutputTransitionBase; |
45 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; | 53 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; |
46 import de.intevation.gnv.transition.describedata.NamedCollection; | 54 import de.intevation.gnv.transition.describedata.NamedCollection; |
47 import de.intevation.gnv.transition.exception.TransitionException; | 55 import de.intevation.gnv.transition.exception.TransitionException; |
61 /** | 69 /** |
62 * the logger, used to log exceptions and additonaly information | 70 * the logger, used to log exceptions and additonaly information |
63 */ | 71 */ |
64 private static Logger log = Logger | 72 private static Logger log = Logger |
65 .getLogger(TimeSeriesOutputTransition.class); | 73 .getLogger(TimeSeriesOutputTransition.class); |
74 | |
75 | |
76 private static List<TimeGap> timeGapDefinitions = null; | |
66 | 77 |
67 protected String domainLable = "Zeit [UTC]"; | 78 protected String domainLable = "Zeit [UTC]"; |
68 | 79 |
69 protected String featureValuesName = "featureid"; | 80 protected String featureValuesName = "featureid"; |
70 protected String parameterValuesName = "parameterid"; | 81 protected String parameterValuesName = "parameterid"; |
268 String uuid) throws IOException, | 279 String uuid) throws IOException, |
269 TechnicalChartException { | 280 TechnicalChartException { |
270 ChartFactory chartFactory = new ChartFactory(); | 281 ChartFactory chartFactory = new ChartFactory(); |
271 chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle, | 282 chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle, |
272 parameters, measurements, outputStream, this | 283 parameters, measurements, outputStream, this |
273 .getChartResult(uuid)); | 284 .getChartResult(uuid),timeGapDefinitions); |
274 } | 285 } |
275 | 286 |
276 protected ChartStyle creatStyle(int witdh, int height) { | 287 protected ChartStyle creatStyle(int witdh, int height) { |
277 // TODO Konfigurierbar machen | 288 // TODO Konfigurierbar machen |
278 de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets( | 289 de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets( |
327 String dateNameValue = Config.getStringXPath(configuration, | 338 String dateNameValue = Config.getStringXPath(configuration, |
328 "value-names/value-name[@name='date']/@value"); | 339 "value-names/value-name[@name='date']/@value"); |
329 if (dateNameValue != null) { | 340 if (dateNameValue != null) { |
330 this.dateValueName = dateNameValue; | 341 this.dateValueName = dateNameValue; |
331 } | 342 } |
332 } | 343 if (timeGapDefinitions == null){ |
333 | 344 Element gapDefinition = (Element)Config.getNodeXPath(configuration, |
345 "time-gap-definition"); | |
346 synchronized (this.getClass()) { | |
347 if (gapDefinition != null){ | |
348 String link = gapDefinition.getAttribute("xlink:href"); | |
349 if (link != null ){ | |
350 String absolutFileName = Config.replaceConfigDir(link); | |
351 gapDefinition = (Element)new ArtifactXMLUtilities(). | |
352 readConfiguration(absolutFileName); | |
353 } | |
354 | |
355 NodeList gapDefinitions = Config.getNodeSetXPath(gapDefinition, | |
356 "/time-gaps/time-gap"); | |
357 if (gapDefinition != null){ | |
358 timeGapDefinitions = new ArrayList<TimeGap>(gapDefinitions. | |
359 getLength()); | |
360 for (int i = 0; i < gapDefinitions.getLength(); i++){ | |
361 Element gapNode = (Element)gapDefinitions.item(i); | |
362 String unit = gapNode.getAttribute("unit"); | |
363 int key = Integer.parseInt(gapNode.getAttribute("key")); | |
364 int value = Integer.parseInt(gapNode.getAttribute("gap")); | |
365 log.info("Add new Timegap: "+key+" "+value+" "+ unit); | |
366 timeGapDefinitions.add(new DefaultTimeGap(unit, | |
367 key, | |
368 value)); | |
369 } | |
370 } | |
371 | |
372 } | |
373 } | |
374 } | |
375 } | |
376 | |
334 /** | 377 /** |
335 * @param collectionName | 378 * @param collectionName |
336 * @return | 379 * @return |
337 */ | 380 */ |
338 protected Collection<KeyValueDescibeData> getCollection( | 381 protected Collection<KeyValueDescibeData> getCollection( |