comparison flys-artifacts/src/main/java/de/intevation/flys/exports/ReferenceCurveExporter.java @ 2285:5a00269406f3

Improved CSV export of reference curves, include Qs. flys-artifacts/trunk@3947 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Tue, 07 Feb 2012 09:58:15 +0000
parents 4a8b519b64bd
children 6f4a1f513e89
comparison
equal deleted inserted replaced
2284:5d1ba04d2f68 2285:5a00269406f3
28 28
29 import de.intevation.flys.artifacts.FLYSArtifact; 29 import de.intevation.flys.artifacts.FLYSArtifact;
30 import de.intevation.flys.artifacts.WINFOArtifact; 30 import de.intevation.flys.artifacts.WINFOArtifact;
31 31
32 import de.intevation.flys.artifacts.model.CalculationResult; 32 import de.intevation.flys.artifacts.model.CalculationResult;
33 import de.intevation.flys.artifacts.model.WW; 33 import de.intevation.flys.artifacts.model.WWQQ;
34 import de.intevation.flys.artifacts.model.WKmsJRDataSource; 34 import de.intevation.flys.artifacts.model.WKmsJRDataSource;
35 import de.intevation.flys.artifacts.resources.Resources; 35 import de.intevation.flys.artifacts.resources.Resources;
36 36
37 import de.intevation.flys.utils.FLYSUtils; 37 import de.intevation.flys.utils.FLYSUtils;
38 import de.intevation.flys.utils.Formatter; 38 import de.intevation.flys.utils.Formatter;
58 public static final String CSV_LOCATION_HEADER = 58 public static final String CSV_LOCATION_HEADER =
59 "export.waterlevel.csv.header.location"; 59 "export.waterlevel.csv.header.location";
60 60
61 public static final String DEFAULT_CSV_LOCATION_HEADER = "Lage"; 61 public static final String DEFAULT_CSV_LOCATION_HEADER = "Lage";
62 62
63 /*
64 For each Bezugs and Ziel-ort (of which there might be multiples):
65 Lage, Bezeichnung, Q, W (cm), W(NN+m).
66 */
67
68 public static final String RC_DEFAULT_CSV_KM_HEADER = "Fluss-Km"; 63 public static final String RC_DEFAULT_CSV_KM_HEADER = "Fluss-Km";
69 public static final String RC_DEFAULT_CSV_W_HEADER = "m"; 64 public static final String RC_DEFAULT_CSV_W_HEADER = "m";
70 public static final String RC_DEFAULT_CSV_Q_HEADER = "Q"; 65 public static final String RC_DEFAULT_CSV_Q_HEADER = "Q";
71 66
72 public static final String PDF_HEADER_MODE = "export.reference_curve.pdf.mode"; 67 public static final String PDF_HEADER_MODE = "export.reference_curve.pdf.mode";
73 public static final String JASPER_FILE = "export.reference_curve.pdf.file"; 68 public static final String JASPER_FILE = "export.reference_curve.pdf.file";
74 69
75 /** The storage that contains all WKms objects for the different facets. */ 70 /** The storage that contains all WKms objects for the different facets. */
76 /* TODO these shall be the function objects, probably. */ 71 protected List<WWQQ[]> data;
77 protected List<WW[]> data;
78 72
79 73
80 public void init(Document request, OutputStream out, CallContext context) { 74 public void init(Document request, OutputStream out, CallContext context) {
81 logger.debug("ReferenceCurveExporter.init"); 75 logger.debug("ReferenceCurveExporter.init");
82 76
83 super.init(request, out, context); 77 super.init(request, out, context);
84 78
85 this.data = new ArrayList<WW[]>(); 79 this.data = new ArrayList<WWQQ[]>();
86 } 80 }
87 81
88 82
89 /** 83 /**
90 * Genereate data in csv format. 84 * Genereate data in csv format.
110 } 104 }
111 105
112 106
113 /** 107 /**
114 * Adds given data. 108 * Adds given data.
115 * @param d either a WKms or a CalculationResult to add to data. 109 * @param d a WWQQ[].
116 */ 110 */
117 @Override 111 @Override
118 protected void addData(Object d) { 112 protected void addData(Object d) {
113 logger.debug("ReferenceCurveExporter.addData");
114
119 if (d instanceof CalculationResult) { 115 if (d instanceof CalculationResult) {
120 d = ((CalculationResult)d).getData(); 116 d = ((CalculationResult)d).getData();
121 if (d instanceof WW []) { 117 if (d instanceof WWQQ []) {
122 data.add((WW [])d); 118 data.add((WWQQ [])d);
123 } 119 logger.debug("ReferenceCurveExporter.addData wwqq[].");
124 } 120 }
125 else if (d instanceof WW) { 121 else {
126 data.add(new WW[] { (WW) d }); 122 logger.warn("ReferenceCurveExporter.addData/1 unknown type ("
123 + d + ").");
124 }
127 } 125 }
128 else { 126 else {
129 logger.warn("ReferenceCurveExporter.addData unknown data type."); 127 logger.warn("ReferenceCurveExporter.addData/2 unknown type ("
128 + d + ").");
130 } 129 }
131 } 130 }
132 131
133 132
134 /** 133 /**
139 protected void writeCSVData(CSVWriter writer) { 138 protected void writeCSVData(CSVWriter writer) {
140 logger.info("ReferenceCurveExporter.writeData"); 139 logger.info("ReferenceCurveExporter.writeData");
141 140
142 writeCSVHeader(writer); 141 writeCSVHeader(writer);
143 142
144 for (WW[] tmp: data) { 143 for (WWQQ[] tmp: data) {
145 for (WW ww: tmp) { 144 for (WWQQ ww: tmp) {
146 ww2CSV(writer, ww); 145 wWQQ2CSV(writer, ww);
147 } 146 }
148 } 147 }
149 } 148 }
150 149
151 150
154 * @param write Writer to write header with. 153 * @param write Writer to write header with.
155 */ 154 */
156 protected void writeCSVHeader(CSVWriter writer) { 155 protected void writeCSVHeader(CSVWriter writer) {
157 logger.info("ReferenceCurveExporter.writeCSVHeader"); 156 logger.info("ReferenceCurveExporter.writeCSVHeader");
158 157
158 // TODO missing 'relative' W(cm).
159 writer.writeNext(new String[] { 159 writer.writeNext(new String[] {
160 msg(RC_CSV_KM_HEADER, RC_DEFAULT_CSV_KM_HEADER), 160 msg(RC_CSV_KM_HEADER, RC_DEFAULT_CSV_KM_HEADER),
161 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER), 161 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER),
162 msg(RC_CSV_W_HEADER, RC_DEFAULT_CSV_W_HEADER), 162 msg(RC_CSV_W_HEADER, RC_DEFAULT_CSV_W_HEADER),
163 msg(RC_CSV_Q_HEADER, RC_DEFAULT_CSV_Q_HEADER), 163 msg(RC_CSV_Q_HEADER, RC_DEFAULT_CSV_Q_HEADER),
167 msg(RC_CSV_Q_HEADER, RC_DEFAULT_CSV_Q_HEADER), 167 msg(RC_CSV_Q_HEADER, RC_DEFAULT_CSV_Q_HEADER),
168 }); 168 });
169 } 169 }
170 170
171 171
172 protected void ww2CSV(CSVWriter writer, WW ww) { 172 protected void wWQQ2CSV(CSVWriter writer, WWQQ ww) {
173 logger.debug("ReferenceCurveExporter.ww2CSV"); 173 logger.debug("ReferenceCurveExporter.wWQQ2CSV");
174 174
175 NumberFormat kmf = getKmFormatter(); 175 NumberFormat kmf = getKmFormatter();
176 NumberFormat wf = getWFormatter(); 176 NumberFormat wf = getWFormatter();
177 NumberFormat qf = getQFormatter();
178
177 int size = ww.size(); 179 int size = ww.size();
178 180
179 FLYSArtifact flys = (FLYSArtifact) master; 181 FLYSArtifact flys = (FLYSArtifact) master;
180 182
181 String startLocationDescription = FLYSUtils.getLocationDescription( 183 String startLocationDescription = FLYSUtils.getLocationDescription(
182 flys, ww.getStartKm()); 184 flys, ww.getStartKm());
183 185
184 String endLocationDescription = FLYSUtils.getLocationDescription( 186 String endLocationDescription = FLYSUtils.getLocationDescription(
185 flys, ww.getEndKm()); 187 flys, ww.getEndKm());
186 188
189 // TODO missing 'relative' W(cm).
187 for (int i = 0; i < size; i ++) { 190 for (int i = 0; i < size; i ++) {
188 writer.writeNext(new String[] { 191 writer.writeNext(new String[] {
189 kmf.format(ww.getStartKm()), 192 kmf.format(ww.getStartKm()),
190 startLocationDescription, 193 startLocationDescription,
191 wf.format(ww.getW1(i)), 194 wf.format(ww.getW1(i)),
192 "", // "Q" 195 qf.format(ww.getQ1(i)), // "Q"
193 kmf.format(ww.getEndKm()), 196 kmf.format(ww.getEndKm()),
194 endLocationDescription, 197 endLocationDescription,
195 wf.format(ww.getW2(i)), 198 wf.format(ww.getW2(i)),
196 "" // "Q" 199 qf.format(ww.getQ2(i)) // "Q"
197 }); 200 });
198 } 201 }
199 }
200
201
202 /**
203 * Returns the number formatter for kilometer values.
204 *
205 * @return the number formatter for kilometer values.
206 */
207 protected NumberFormat getKmFormatter() {
208 return Formatter.getWaterlevelKM(context);
209 }
210
211
212 /**
213 * Returns the number formatter for W values.
214 *
215 * @return the number formatter for W values.
216 */
217 protected NumberFormat getWFormatter() {
218 return Formatter.getWaterlevelW(context);
219 } 202 }
220 203
221 204
222 @Override 205 @Override
223 protected void writePDF(OutputStream out) { 206 protected void writePDF(OutputStream out) {

http://dive4elements.wald.intevation.org