Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 95:13402ac8d8fe
Put the Statisticscalulation to the Outmethod of the OutputTransition.
gnv-artifacts/trunk@140 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 28 Sep 2009 08:20:28 +0000 |
parents | bd284d8306db |
children | 156db25ad4b4 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Mon Sep 28 07:32:03 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Mon Sep 28 08:20:28 2009 +0000 @@ -11,20 +11,35 @@ import java.util.Collection; import java.util.Iterator; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; import au.com.bytecode.opencsv.CSVWriter; - +import de.intevation.artifactdatabase.XMLUtils; import de.intevation.gnv.chart.ChartFactory; import de.intevation.gnv.chart.ChartLabels; import de.intevation.gnv.chart.ChartStyle; import de.intevation.gnv.chart.exception.TechnicalChartException; import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.statistics.Statistic; +import de.intevation.gnv.statistics.TimeseriesStatistics; +import de.intevation.gnv.statistics.exception.StatisticsException; import de.intevation.gnv.transition.InputData; import de.intevation.gnv.transition.OutputTransitionBase; import de.intevation.gnv.transition.describedata.KeyValueDescibeData; import de.intevation.gnv.transition.describedata.NamedCollection; import de.intevation.gnv.transition.exception.TransitionException; +import de.intevation.gnv.utils.ArtifactXMLUtilities; /** * @author Tim Englich <tim.englich@intevation.de> @@ -112,6 +127,12 @@ log.error("No Data given for generation an CSV-File."); throw new TransitionException("No Data given for generation an CSV-File."); } + }else if (outputMode.equalsIgnoreCase("statistics")){ + log.debug("Statistics will be generated."); + TimeseriesStatistics tss = new TimeseriesStatistics(); + Collection<Statistic> statistics = tss.calculateStatistics(this.chartResult); + Document doc = this.writeStatistics2XML(statistics); + this.writeDocument2OutputStream(doc, outputStream); } } catch (IOException e) { log.error(e,e); @@ -119,8 +140,47 @@ } catch (TechnicalChartException e) { log.error(e,e); throw new TransitionException(e); + }catch (StatisticsException e) { + log.error(e,e); + throw new TransitionException(e); } } + + protected void writeDocument2OutputStream(Document document, OutputStream os){ + + try { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(document); + StreamResult result = new StreamResult(os); + transformer.transform(source, result); + } catch (TransformerConfigurationException e) { + log.error(e,e); + } catch (TransformerFactoryConfigurationError e) { + log.error(e,e); + }catch (TransformerException e) { + log.error(e,e); + } + } + + protected Document writeStatistics2XML(Collection<Statistic> statistic){ + ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + Document doc = XMLUtils.newDocument(); + if (statistic != null){ + Node statisticResults = xmlUtilities.createArtifactElement(doc, "statistic-values"); + doc.appendChild(statisticResults); + Iterator<Statistic> it = statistic.iterator(); + while (it.hasNext()){ + Statistic s = it.next(); + Element result = xmlUtilities.createArtifactElement(doc, "statistic"); + result.setAttribute("name", s.getKey()); + result.setAttribute("value", s.getStringValue()); + statisticResults.appendChild(result); + } + + } + return doc; + } protected String getSelectedFeatureName(){