comparison gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java @ 230:f68ffbe974a0

Implemented an exporter for odv and csv exports. gnv-artifacts/trunk@298 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 06 Nov 2009 10:56:18 +0000
parents ee2d4134d0b3
children 3d6d89bcbf42
comparison
equal deleted inserted replaced
229:a610c0a01afc 230:f68ffbe974a0
6 import java.awt.Color; 6 import java.awt.Color;
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.PrintWriter;
11 import java.io.UnsupportedEncodingException; 12 import java.io.UnsupportedEncodingException;
12 import java.util.ArrayList; 13 import java.util.ArrayList;
13 import java.util.Collection; 14 import java.util.Collection;
14 import java.util.Iterator; 15 import java.util.Iterator;
15 import java.util.List; 16 import java.util.List;
48 import de.intevation.gnv.transition.InputData; 49 import de.intevation.gnv.transition.InputData;
49 import de.intevation.gnv.transition.OutputTransitionBase; 50 import de.intevation.gnv.transition.OutputTransitionBase;
50 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; 51 import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
51 import de.intevation.gnv.transition.describedata.NamedCollection; 52 import de.intevation.gnv.transition.describedata.NamedCollection;
52 import de.intevation.gnv.transition.exception.TransitionException; 53 import de.intevation.gnv.transition.exception.TransitionException;
54
55 import de.intevation.gnv.exports.DefaultExport;
56 import de.intevation.gnv.exports.DefaultProfile;
57 import de.intevation.gnv.exports.Export.Profile;
58
53 import de.intevation.gnv.utils.ArtifactXMLUtilities; 59 import de.intevation.gnv.utils.ArtifactXMLUtilities;
60
54 61
55 /** 62 /**
56 * @author Tim Englich <tim.englich@intevation.de> 63 * @author Tim Englich <tim.englich@intevation.de>
57 * 64 *
58 */ 65 */
76 83
77 protected String featureValuesName = "featureid"; 84 protected String featureValuesName = "featureid";
78 protected String parameterValuesName = "parameterid"; 85 protected String parameterValuesName = "parameterid";
79 protected String measuremenValueName = "measurementid"; 86 protected String measuremenValueName = "measurementid";
80 protected String dateValueName = "dateid"; 87 protected String dateValueName = "dateid";
88
89 public static final String [] TIMESERIES_CSV_PROFILE_NAMES = {
90 "XORDINATE",
91 "YORDINATE",
92 "GROUP1",
93 "GROUP2",
94 "GROUP3"
95 };
96
97 /**
98 * Profile for exporting data to cvs
99 */
100 public static final Profile TIMESERIES_CSV_PROFILE =
101 new DefaultProfile(
102 TIMESERIES_CSV_PROFILE_NAMES,
103 ',',
104 '"',
105 '"',
106 "CSV",
107 "ISO-8859-1");
108
109 /**
110 * Profile for exporting data to odv
111 * TODO Change TIMESERIES_PROFILE_NAMES, which belong to CSV exports
112 */
113 public static final Profile TIMESERIES_ODV_PROFILE =
114 new DefaultProfile(
115 TIMESERIES_CSV_PROFILE_NAMES,
116 '\t',
117 CSVWriter.NO_QUOTE_CHARACTER,
118 CSVWriter.NO_ESCAPE_CHARACTER,
119 "ODV",
120 "ISO-8859-1");
81 121
82 /** 122 /**
83 * Constructor 123 * Constructor
84 */ 124 */
85 public TimeSeriesOutputTransition() { 125 public TimeSeriesOutputTransition() {
136 Statistics s = getStatisticsGenerator(); 176 Statistics s = getStatisticsGenerator();
137 Collection<Statistic> statistics = s 177 Collection<Statistic> statistics = s
138 .calculateStatistics(chartResult); 178 .calculateStatistics(chartResult);
139 Document doc = this.writeStatistics2XML(statistics); 179 Document doc = this.writeStatistics2XML(statistics);
140 this.writeDocument2OutputStream(doc, outputStream); 180 this.writeDocument2OutputStream(doc, outputStream);
181 } else if (outputMode.equalsIgnoreCase("odv")) {
182 //TimeSeriesExport export = new TimeSeriesExport();
183 //export.createODV(outputStream, chartResult);
184 createODV(outputStream, chartResult);
141 } 185 }
142 } catch (IOException e) { 186 } catch (IOException e) {
143 log.error(e, e); 187 log.error(e, e);
144 throw new TransitionException(e); 188 throw new TransitionException(e);
145 } catch (TechnicalChartException e) { 189 } catch (TechnicalChartException e) {
149 log.error(e, e); 193 log.error(e, e);
150 throw new TransitionException(e); 194 throw new TransitionException(e);
151 } 195 }
152 } 196 }
153 197
198
154 /** 199 /**
155 * @param outputStream 200 * @param outputStream
156 * @param chartResult 201 * @param chartResult
157 * @throws UnsupportedEncodingException 202 * @throws UnsupportedEncodingException
158 * @throws IOException 203 * @throws IOException
161 protected void createCSV(OutputStream outputStream, 206 protected void createCSV(OutputStream outputStream,
162 Collection<Result> chartResult) 207 Collection<Result> chartResult)
163 throws UnsupportedEncodingException, 208 throws UnsupportedEncodingException,
164 IOException, 209 IOException,
165 TransitionException { 210 TransitionException {
166 if (chartResult != null) { 211 DefaultExport export = new DefaultExport();
167 CSVWriter writer = new CSVWriter(new OutputStreamWriter( 212
168 outputStream, "ISO-8859-1"), ','); 213 export.create(TIMESERIES_CSV_PROFILE, outputStream, chartResult);
169 // USE THIS ENCODING BECAUSE OF 214 }
170 // PROBLEMS WITH EXCEL AND UTF-8 215
171 Iterator<Result> it = chartResult.iterator(); 216 /**
172 while (it.hasNext()) { 217 * TODO Result is not used at the moment. Change result with correct data.
173 Result result = it.next(); 218 */
174 int i = 0; 219 protected void createODV(OutputStream outputStream, Collection result)
175 String[] entries = new String[5]; 220 throws IOException, TransitionException {
176 entries[i++] = result.getString("XORDINATE"); 221
177 entries[i++] = result.getString("YORDINATE"); 222 DefaultExport export = new DefaultExport();
178 entries[i++] = result.getString("GROUP1"); 223
179 entries[i++] = result.getString("GROUP2"); 224 export.create(TIMESERIES_ODV_PROFILE, outputStream, result);
180 entries[i++] = result.getString("GROUP3");
181 writer.writeNext(entries);
182 }
183 writer.close();
184 } else {
185 log.error("No Data given for generation an CSV-File.");
186 throw new TransitionException(
187 "No Data given for generation an CSV-File.");
188 }
189 } 225 }
190 226
191 /** 227 /**
192 * @return 228 * @return
193 */ 229 */

http://dive4elements.wald.intevation.org