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() {

http://dive4elements.wald.intevation.org