comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8894:a66f2a7c4f84

SINFO FlowDepth - slight code cleanup
author gernotbelger
date Thu, 15 Feb 2018 18:40:40 +0100
parents 7a8c12706834
children 791714b92b5c
comparison
equal deleted inserted replaced
8893:ffebc94cf679 8894:a66f2a7c4f84
8 8
9 package org.dive4elements.river.artifacts.sinfo.flowdepth; 9 package org.dive4elements.river.artifacts.sinfo.flowdepth;
10 10
11 import java.io.OutputStream; 11 import java.io.OutputStream;
12 import java.text.DateFormat; 12 import java.text.DateFormat;
13 import java.text.NumberFormat;
13 import java.util.ArrayList; 14 import java.util.ArrayList;
14 import java.util.Collection; 15 import java.util.Collection;
15 import java.util.Date; 16 import java.util.Date;
16 import java.util.HashMap; 17 import java.util.HashMap;
17 import java.util.Locale; 18 import java.util.Locale;
18 import java.util.Map; 19 import java.util.Map;
19 20
20 import org.apache.commons.lang.StringUtils; 21 import org.apache.commons.lang.StringUtils;
22 import org.apache.commons.lang.math.DoubleRange;
21 import org.apache.log4j.Logger; 23 import org.apache.log4j.Logger;
22 import org.dive4elements.artifacts.CallMeta; 24 import org.dive4elements.artifacts.CallMeta;
23 import org.dive4elements.artifacts.common.utils.Config; 25 import org.dive4elements.artifacts.common.utils.Config;
24 import org.dive4elements.river.FLYS; 26 import org.dive4elements.river.FLYS;
25 import org.dive4elements.river.artifacts.model.CalculationResult; 27 import org.dive4elements.river.artifacts.model.CalculationResult;
26 import org.dive4elements.river.artifacts.resources.Resources; 28 import org.dive4elements.river.artifacts.resources.Resources;
29 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
27 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; 30 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
31 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
32 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
28 import org.dive4elements.river.exports.AbstractExporter; 33 import org.dive4elements.river.exports.AbstractExporter;
29 import org.dive4elements.river.model.River;
30 import org.dive4elements.river.model.Unit;
31 import org.dive4elements.river.utils.RiverUtils; 34 import org.dive4elements.river.utils.RiverUtils;
32 35
33 import au.com.bytecode.opencsv.CSVWriter; 36 import au.com.bytecode.opencsv.CSVWriter;
34 import net.sf.jasperreports.engine.JRDataSource; 37 import net.sf.jasperreports.engine.JRDataSource;
35 import net.sf.jasperreports.engine.JRException; 38 import net.sf.jasperreports.engine.JRException;
149 152
150 /* fetch calculation results */ 153 /* fetch calculation results */
151 final FlowDepthCalculationResults results = this.data; 154 final FlowDepthCalculationResults results = this.data;
152 155
153 final boolean useTkh = results.isUseTkh(); 156 final boolean useTkh = results.isUseTkh();
154 final River river = results.getRiver(); 157 final RiverInfo river = results.getRiver();
155 158
156 /* write as csv */ 159 /* write as csv */
157 writeCSVMeta(writer, results); 160 writeCSVMeta(writer, results);
158 writeCSVHeader(writer, river, useTkh); 161 writeCSVHeader(writer, river, useTkh);
159 162
202 205
203 private void writeCSVMeta(final CSVWriter writer, final FlowDepthCalculationResults results) { 206 private void writeCSVMeta(final CSVWriter writer, final FlowDepthCalculationResults results) {
204 log.info("FlowDepthExporter.writeCSVMeta"); 207 log.info("FlowDepthExporter.writeCSVMeta");
205 208
206 final String calcModeLabel = results.getCalcModeLabel(); 209 final String calcModeLabel = results.getCalcModeLabel();
207 final River river = results.getRiver(); 210 final RiverInfo river = results.getRiver();
208 writeCSVMetaEntry(writer, CSV_META_HEADER_RESULT, msg(CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel); 211 writeCSVMetaEntry(writer, CSV_META_HEADER_RESULT, msg(CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel);
209 212
210 // "# FLYS-Version: " 213 // "# FLYS-Version: "
211 writeCSVMetaEntry(writer, CSV_META_VERSION, msg(CSV_META_VERSION_LABEL), FLYS.VERSION); 214 writeCSVMetaEntry(writer, CSV_META_VERSION, msg(CSV_META_VERSION_LABEL), FLYS.VERSION);
212 215
220 223
221 // "# Gewässer: " 224 // "# Gewässer: "
222 writeCSVMetaEntry(writer, CSV_META_RIVER, msg(CSV_META_RIVER_LABEL), river.getName()); 225 writeCSVMetaEntry(writer, CSV_META_RIVER, msg(CSV_META_RIVER_LABEL), river.getName());
223 226
224 // "# Höhensystem des Flusses: " 227 // "# Höhensystem des Flusses: "
225 final Unit wstUnit = river.getWstUnit(); 228 writeCSVMetaEntry(writer, CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit());
226 writeCSVMetaEntry(writer, CSV_META_HEIGHT_UNIT_RIVER, wstUnit.getName());
227 229
228 // "# Ort/Bereich (km): " 230 // "# Ort/Bereich (km): "
229 writeCSVMetaEntry(writer, CSV_META_RANGE, msg(CSV_META_RANGE_LABEL), getKmFormatter().format(results.getFrom()), 231 final DoubleRange calcRange = results.getCalcRange();
230 getKmFormatter().format(results.getTo())); 232 writeCSVMetaEntry(writer, CSV_META_RANGE, msg(CSV_META_RANGE_LABEL), getKmFormatter().format(calcRange.getMinimumDouble()),
233 getKmFormatter().format(calcRange.getMaximumDouble()));
231 234
232 writer.writeNext(new String[] { "" }); 235 writer.writeNext(new String[] { "" });
233 } 236 }
234 237
235 private void writeCSVMetaEntry(final CSVWriter writer, final String message, final Object... messageArgs) { 238 private void writeCSVMetaEntry(final CSVWriter writer, final String message, final Object... messageArgs) {
244 * gauge or at a location. 247 * gauge or at a location.
245 * 248 *
246 * @param river 249 * @param river
247 * @param useTkh 250 * @param useTkh
248 */ 251 */
249 private void writeCSVHeader(final CSVWriter writer, final River river, final boolean useTkh) { 252 private void writeCSVHeader(final CSVWriter writer, final RiverInfo river, final boolean useTkh) {
250 log.info("FlowDepthExporter.writeCSVHeader"); 253 log.info("FlowDepthExporter.writeCSVHeader");
251 254
252 final Collection<String> header = new ArrayList<>(11); 255 final Collection<String> header = new ArrayList<>(11);
253 256
254 header.add(msg(CSV_KM_HEADER)); 257 header.add(msg(CSV_KM_HEADER));
256 if (useTkh) { 259 if (useTkh) {
257 header.add(msgUnit(CSV_FLOWDEPTHTKH_HEADER, UNIT_M)); 260 header.add(msgUnit(CSV_FLOWDEPTHTKH_HEADER, UNIT_M));
258 header.add(msgUnit(CSV_TKH_HEADER, UNIT_CM)); 261 header.add(msgUnit(CSV_TKH_HEADER, UNIT_CM));
259 } 262 }
260 263
261 final String wstUnitName = river.getWstUnit().getName(); 264 header.add(msgUnit(CSV_WATERLEVEL_HEADER, river.getWstUnit()));
262 header.add(msgUnit(CSV_WATERLEVEL_HEADER, wstUnitName));
263 header.add(msgUnit(CSV_DISCHARGE_HEADER, UNIT_CUBIC_M)); 265 header.add(msgUnit(CSV_DISCHARGE_HEADER, UNIT_CUBIC_M));
264 header.add(msg(CSV_LABEL_HEADER)); 266 header.add(msg(CSV_LABEL_HEADER));
265 header.add(msg(CSV_GAUGE_HEADER)); 267 header.add(msg(CSV_GAUGE_HEADER));
266 header.add(msgUnit(CSV_MEAN_BED_HEIGHT_HEADER, wstUnitName)); 268 header.add(msgUnit(CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit()));
267 header.add(msg(CSV_SOUNDING_HEADER)); 269 header.add(msg(CSV_SOUNDING_HEADER));
268 header.add(msg(CSV_LOCATION_HEADER)); 270 header.add(msg(CSV_LOCATION_HEADER));
269 271
270 writer.writeNext(header.toArray(new String[header.size()])); 272 writer.writeNext(header.toArray(new String[header.size()]));
271 } 273 }
374 return source; 376 return source;
375 } 377 }
376 378
377 private void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) { 379 private void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) {
378 380
379 final River river = results.getRiver(); 381 final RiverInfo river = results.getRiver();
380 final String wstUnitName = river.getWstUnit().getName(); 382 final String wstUnitName = river.getWstUnit();
381 383
382 /* general metadata */ 384 /* general metadata */
383 source.addMetaData("header", msg(CSV_META_HEADER_RESULT_LABEL)); 385 source.addMetaData("header", msg(CSV_META_HEADER_RESULT_LABEL));
384 source.addMetaData("calcMode", results.getCalcModeLabel()); 386 source.addMetaData("calcMode", results.getCalcModeLabel());
385 387
395 source.addMetaData("date", df.format(new Date())); 397 source.addMetaData("date", df.format(new Date()));
396 398
397 source.addMetaData("river_label", msg(CSV_META_RIVER_LABEL)); 399 source.addMetaData("river_label", msg(CSV_META_RIVER_LABEL));
398 source.addMetaData("river", river.getName()); 400 source.addMetaData("river", river.getName());
399 401
400 final String rangeValue = String.format("%s - %s", getKmFormatter().format(results.getFrom()), getKmFormatter().format(results.getTo())); 402 final DoubleRange calcRange = results.getCalcRange();
403 final NumberFormat kmFormatter = getKmFormatter();
404 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble()));
401 source.addMetaData("range_label", msg(CSV_META_RANGE_LABEL)); 405 source.addMetaData("range_label", msg(CSV_META_RANGE_LABEL));
402 source.addMetaData("range", rangeValue); 406 source.addMetaData("range", rangeValue);
403 407
404 /* column headings */ 408 /* column headings */
405 source.addMetaData("station_header", msg(CSV_KM_HEADER)); 409 source.addMetaData("station_header", msg(CSV_KM_HEADER));

http://dive4elements.wald.intevation.org