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

http://dive4elements.wald.intevation.org