Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 446:c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
flys-artifacts/trunk@1938 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 17 May 2011 16:31:07 +0000 |
parents | a7947972fdeb |
children | 5606ba4139e0 |
comparison
equal
deleted
inserted
replaced
445:a7947972fdeb | 446:c0bec245f608 |
---|---|
1 package de.intevation.flys.exports; | 1 package de.intevation.flys.exports; |
2 | 2 |
3 import java.io.IOException; | |
3 import java.io.OutputStream; | 4 import java.io.OutputStream; |
4 import java.text.NumberFormat; | 5 import java.text.NumberFormat; |
5 import java.util.ArrayList; | 6 import java.util.ArrayList; |
6 import java.util.List; | 7 import java.util.List; |
7 | 8 |
26 | 27 |
27 /** The logger used in this exporter.*/ | 28 /** The logger used in this exporter.*/ |
28 private static Logger logger = Logger.getLogger(WaterlevelExporter.class); | 29 private static Logger logger = Logger.getLogger(WaterlevelExporter.class); |
29 | 30 |
30 | 31 |
32 public static final String FACET_WST = "wst"; | |
33 | |
34 | |
31 public static final String CSV_KM_HEADER = | 35 public static final String CSV_KM_HEADER = |
32 "export.waterlevel.csv.header.km"; | 36 "export.waterlevel.csv.header.km"; |
33 | 37 |
34 public static final String CSV_W_HEADER = | 38 public static final String CSV_W_HEADER = |
35 "export.waterlevel.csv.header.w"; | 39 "export.waterlevel.csv.header.w"; |
50 logger.debug("WaterlevelExporter.init"); | 54 logger.debug("WaterlevelExporter.init"); |
51 | 55 |
52 super.init(request, out, context); | 56 super.init(request, out, context); |
53 | 57 |
54 this.data = new ArrayList<WQKms[]>(); | 58 this.data = new ArrayList<WQKms[]>(); |
59 } | |
60 | |
61 | |
62 @Override | |
63 public void generate() | |
64 throws IOException | |
65 { | |
66 logger.debug("WaterlevelExporter.generate"); | |
67 | |
68 if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) { | |
69 generateCSV(); | |
70 } | |
71 else if (facet != null && facet.equals(FACET_WST)) { | |
72 generateWST(); | |
73 } | |
74 else { | |
75 throw new IOException("invalid facet for exporter"); | |
76 } | |
55 } | 77 } |
56 | 78 |
57 | 79 |
58 protected void addData(Artifact artifact) { | 80 protected void addData(Artifact artifact) { |
59 data.add(getWaterlevelData(artifact)); | 81 data.add(getWaterlevelData(artifact)); |
122 } | 144 } |
123 } | 145 } |
124 | 146 |
125 | 147 |
126 /** | 148 /** |
149 * Generates the output in WST format. | |
150 */ | |
151 protected void generateWST() | |
152 throws IOException | |
153 { | |
154 logger.info("WaterlevelExporter.generateWST"); | |
155 | |
156 int cols = data.get(0).length; | |
157 WstWriter writer = new WstWriter(cols); | |
158 | |
159 writeWSTData(writer); | |
160 | |
161 writer.write(out); | |
162 } | |
163 | |
164 | |
165 protected void writeWSTData(WstWriter writer) { | |
166 logger.debug("WaterlevelExporter.writeWSTData"); | |
167 | |
168 double[] result = new double[3]; | |
169 | |
170 for (WQKms[] tmp: data) { | |
171 for (WQKms wqkms: tmp) { | |
172 int size = wqkms != null ? wqkms.size() : 0; | |
173 | |
174 for (int i = 0; i < size; i++) { | |
175 result = wqkms.get(i, result); | |
176 | |
177 writer.add(result); | |
178 } | |
179 } | |
180 } | |
181 } | |
182 | |
183 | |
184 /** | |
127 * Returns the number formatter for kilometer values. | 185 * Returns the number formatter for kilometer values. |
128 * | 186 * |
129 * @return the number formatter for kilometer values. | 187 * @return the number formatter for kilometer values. |
130 */ | 188 */ |
131 protected NumberFormat getKmFormatter() { | 189 protected NumberFormat getKmFormatter() { |