Mercurial > dive4elements > river
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)); |