Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/verticalcrosssection/VerticalCrossSectionOutputTransition.java @ 197:bab92ad1165d
Added the required Classes an Configuration for providing VerticalCrossSections
gnv-artifacts/trunk@250 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Tue, 20 Oct 2009 13:32:05 +0000 |
parents | |
children | 6a3a02e004d9 |
comparison
equal
deleted
inserted
replaced
196:60c61f323f16 | 197:bab92ad1165d |
---|---|
1 /** | |
2 * | |
3 */ | |
4 package de.intevation.gnv.transition.profile.verticalcrosssection; | |
5 | |
6 import java.io.IOException; | |
7 import java.io.OutputStream; | |
8 import java.io.OutputStreamWriter; | |
9 import java.io.UnsupportedEncodingException; | |
10 import java.util.Collection; | |
11 import java.util.Iterator; | |
12 | |
13 import org.apache.log4j.Logger; | |
14 | |
15 import au.com.bytecode.opencsv.CSVWriter; | |
16 | |
17 import com.vividsolutions.jts.geom.Point; | |
18 import com.vividsolutions.jts.io.ParseException; | |
19 import com.vividsolutions.jts.io.WKTReader; | |
20 | |
21 import de.intevation.gnv.chart.ChartLabels; | |
22 import de.intevation.gnv.chart.ChartStyle; | |
23 import de.intevation.gnv.chart.VerticalCrossSectionChartFactory; | |
24 import de.intevation.gnv.chart.exception.TechnicalChartException; | |
25 import de.intevation.gnv.geobackend.base.Result; | |
26 import de.intevation.gnv.statistics.Statistics; | |
27 import de.intevation.gnv.statistics.VerticalProfileStatistics; | |
28 import de.intevation.gnv.transition.describedata.KeyValueDescibeData; | |
29 import de.intevation.gnv.transition.exception.TransitionException; | |
30 import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition; | |
31 | |
32 /** | |
33 * @author Tim Englich <tim.englich@intevation.de> | |
34 * | |
35 */ | |
36 public class VerticalCrossSectionOutputTransition extends TimeSeriesOutputTransition { | |
37 | |
38 private static Logger log = Logger | |
39 .getLogger(VerticalCrossSectionOutputTransition.class); | |
40 | |
41 /** | |
42 * The UID of this Class | |
43 */ | |
44 private static final long serialVersionUID = 3233620652465061860L; | |
45 | |
46 /** | |
47 * Constructor | |
48 */ | |
49 public VerticalCrossSectionOutputTransition() { | |
50 super(); | |
51 super.domainLable = "Depth [m]"; | |
52 } | |
53 | |
54 /** | |
55 * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream, | |
56 * java.util.Collection, java.util.Collection, java.lang.String, | |
57 * de.intevation.gnv.chart.ChartStyle, | |
58 * de.intevation.gnv.chart.ChartLabels) | |
59 */ | |
60 @Override | |
61 protected void createChart(OutputStream outputStream, | |
62 Collection<KeyValueDescibeData> parameters, | |
63 Collection<KeyValueDescibeData> measurements, | |
64 Collection<KeyValueDescibeData> dates, | |
65 ChartStyle chartStyle, ChartLabels chartLables, | |
66 String uuid) throws IOException, | |
67 TechnicalChartException { | |
68 new VerticalCrossSectionChartFactory().createProfileChart(chartLables, | |
69 chartStyle, parameters, measurements, dates, outputStream, this | |
70 .getChartResult(uuid)); | |
71 } | |
72 | |
73 /** | |
74 * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator() | |
75 */ | |
76 @Override | |
77 protected Statistics getStatisticsGenerator() { | |
78 return new VerticalProfileStatistics(); | |
79 } | |
80 | |
81 /** | |
82 * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createCSV(java.io.OutputStream, java.util.Collection) | |
83 */ | |
84 @Override | |
85 protected void createCSV(OutputStream outputStream, | |
86 Collection<Result> chartResult) | |
87 throws UnsupportedEncodingException, | |
88 IOException, | |
89 TransitionException { | |
90 if (chartResult != null) { | |
91 try { | |
92 CSVWriter writer = new CSVWriter(new OutputStreamWriter( | |
93 outputStream, "ISO-8859-1"), ','); | |
94 // USE THIS ENCODING BECAUSE OF | |
95 // PROBLEMS WITH EXCEL AND UTF-8 | |
96 Iterator<Result> it = chartResult.iterator(); | |
97 WKTReader wktReader = new WKTReader(); | |
98 while (it.hasNext()) { | |
99 Result result = it.next(); | |
100 int i = 0; | |
101 String[] entries = new String[8]; | |
102 Point p = (Point)wktReader.read(result.getString("SHAPE")); | |
103 entries[i++] = ""+p.getX(); | |
104 entries[i++] = ""+p.getY(); | |
105 entries[i++] = result.getString("YORDINATE"); | |
106 entries[i++] = result.getString("GROUP1"); | |
107 entries[i++] = result.getString("GROUP2"); | |
108 entries[i++] = result.getString("IPOSITION"); | |
109 entries[i++] = result.getString("JPOSITION"); | |
110 entries[i++] = result.getString("KPOSITION"); | |
111 writer.writeNext(entries); | |
112 } | |
113 writer.close(); | |
114 } catch (ParseException e) { | |
115 log.error(e,e); | |
116 throw new TransitionException( | |
117 "Exception occured while parsing an Point from WKT."); | |
118 } | |
119 } else { | |
120 log.error("No Data given for generating an CSV-File."); | |
121 throw new TransitionException( | |
122 "No Data given for generating an CSV-File."); | |
123 } | |
124 } | |
125 | |
126 } |