Mercurial > dive4elements > gnv-client
comparison 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 |
comparison
equal
deleted
inserted
replaced
94:6a825a184883 | 95:13402ac8d8fe |
---|---|
9 import java.io.OutputStream; | 9 import java.io.OutputStream; |
10 import java.io.OutputStreamWriter; | 10 import java.io.OutputStreamWriter; |
11 import java.util.Collection; | 11 import java.util.Collection; |
12 import java.util.Iterator; | 12 import java.util.Iterator; |
13 | 13 |
14 import javax.xml.transform.Transformer; | |
15 import javax.xml.transform.TransformerConfigurationException; | |
16 import javax.xml.transform.TransformerException; | |
17 import javax.xml.transform.TransformerFactory; | |
18 import javax.xml.transform.TransformerFactoryConfigurationError; | |
19 import javax.xml.transform.dom.DOMSource; | |
20 import javax.xml.transform.stream.StreamResult; | |
21 | |
14 import org.apache.log4j.Logger; | 22 import org.apache.log4j.Logger; |
23 import org.w3c.dom.Document; | |
24 import org.w3c.dom.Element; | |
25 import org.w3c.dom.Node; | |
15 | 26 |
16 import au.com.bytecode.opencsv.CSVWriter; | 27 import au.com.bytecode.opencsv.CSVWriter; |
17 | 28 import de.intevation.artifactdatabase.XMLUtils; |
18 import de.intevation.gnv.chart.ChartFactory; | 29 import de.intevation.gnv.chart.ChartFactory; |
19 import de.intevation.gnv.chart.ChartLabels; | 30 import de.intevation.gnv.chart.ChartLabels; |
20 import de.intevation.gnv.chart.ChartStyle; | 31 import de.intevation.gnv.chart.ChartStyle; |
21 import de.intevation.gnv.chart.exception.TechnicalChartException; | 32 import de.intevation.gnv.chart.exception.TechnicalChartException; |
22 import de.intevation.gnv.geobackend.base.Result; | 33 import de.intevation.gnv.geobackend.base.Result; |
34 import de.intevation.gnv.statistics.Statistic; | |
35 import de.intevation.gnv.statistics.TimeseriesStatistics; | |
36 import de.intevation.gnv.statistics.exception.StatisticsException; | |
23 import de.intevation.gnv.transition.InputData; | 37 import de.intevation.gnv.transition.InputData; |
24 import de.intevation.gnv.transition.OutputTransitionBase; | 38 import de.intevation.gnv.transition.OutputTransitionBase; |
25 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; | 39 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; |
26 import de.intevation.gnv.transition.describedata.NamedCollection; | 40 import de.intevation.gnv.transition.describedata.NamedCollection; |
27 import de.intevation.gnv.transition.exception.TransitionException; | 41 import de.intevation.gnv.transition.exception.TransitionException; |
42 import de.intevation.gnv.utils.ArtifactXMLUtilities; | |
28 | 43 |
29 /** | 44 /** |
30 * @author Tim Englich <tim.englich@intevation.de> | 45 * @author Tim Englich <tim.englich@intevation.de> |
31 * | 46 * |
32 */ | 47 */ |
110 writer.close(); | 125 writer.close(); |
111 }else{ | 126 }else{ |
112 log.error("No Data given for generation an CSV-File."); | 127 log.error("No Data given for generation an CSV-File."); |
113 throw new TransitionException("No Data given for generation an CSV-File."); | 128 throw new TransitionException("No Data given for generation an CSV-File."); |
114 } | 129 } |
130 }else if (outputMode.equalsIgnoreCase("statistics")){ | |
131 log.debug("Statistics will be generated."); | |
132 TimeseriesStatistics tss = new TimeseriesStatistics(); | |
133 Collection<Statistic> statistics = tss.calculateStatistics(this.chartResult); | |
134 Document doc = this.writeStatistics2XML(statistics); | |
135 this.writeDocument2OutputStream(doc, outputStream); | |
115 } | 136 } |
116 } catch (IOException e) { | 137 } catch (IOException e) { |
117 log.error(e,e); | 138 log.error(e,e); |
118 throw new TransitionException(e); | 139 throw new TransitionException(e); |
119 } catch (TechnicalChartException e) { | 140 } catch (TechnicalChartException e) { |
120 log.error(e,e); | 141 log.error(e,e); |
121 throw new TransitionException(e); | 142 throw new TransitionException(e); |
122 } | 143 }catch (StatisticsException e) { |
144 log.error(e,e); | |
145 throw new TransitionException(e); | |
146 } | |
147 } | |
148 | |
149 protected void writeDocument2OutputStream(Document document, OutputStream os){ | |
150 | |
151 try { | |
152 TransformerFactory transformerFactory = TransformerFactory.newInstance(); | |
153 Transformer transformer = transformerFactory.newTransformer(); | |
154 DOMSource source = new DOMSource(document); | |
155 StreamResult result = new StreamResult(os); | |
156 transformer.transform(source, result); | |
157 } catch (TransformerConfigurationException e) { | |
158 log.error(e,e); | |
159 } catch (TransformerFactoryConfigurationError e) { | |
160 log.error(e,e); | |
161 }catch (TransformerException e) { | |
162 log.error(e,e); | |
163 } | |
164 } | |
165 | |
166 protected Document writeStatistics2XML(Collection<Statistic> statistic){ | |
167 ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); | |
168 Document doc = XMLUtils.newDocument(); | |
169 if (statistic != null){ | |
170 Node statisticResults = xmlUtilities.createArtifactElement(doc, "statistic-values"); | |
171 doc.appendChild(statisticResults); | |
172 Iterator<Statistic> it = statistic.iterator(); | |
173 while (it.hasNext()){ | |
174 Statistic s = it.next(); | |
175 Element result = xmlUtilities.createArtifactElement(doc, "statistic"); | |
176 result.setAttribute("name", s.getKey()); | |
177 result.setAttribute("value", s.getStringValue()); | |
178 statisticResults.appendChild(result); | |
179 } | |
180 | |
181 } | |
182 return doc; | |
123 } | 183 } |
124 | 184 |
125 | 185 |
126 protected String getSelectedFeatureName(){ | 186 protected String getSelectedFeatureName(){ |
127 String collectionName = "featureid"; // TODO: Konfigurierbar machen | 187 String collectionName = "featureid"; // TODO: Konfigurierbar machen |