annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepthminmax/FlowDepthMinMaxCalculationResult.java @ 9195:a4121ec450d6

'ca.'-issue ExportContextCSV+PDF separated uinfo.inundationduration url export
author gernotbelger
date Fri, 29 Jun 2018 14:52:54 +0200
parents 23945061daec
children 740d65e4aa14
rev   line source
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
2 * Software engineering by
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
5 *
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
9 */
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo.flowdepthminmax;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
11
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
12 import java.util.ArrayList;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
13 import java.util.Collection;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
14
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
15 import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
16 import org.dive4elements.river.artifacts.common.ExportContextCSV;
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
17 import org.dive4elements.river.artifacts.common.ExportContextPDF;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
18 import org.dive4elements.river.artifacts.common.GeneralResultType;
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
19 import org.dive4elements.river.artifacts.common.IExportContext;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
20 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
8997
d5802f22e4f5 Work on uinfo
gernotbelger
parents: 8993
diff changeset
21 import org.dive4elements.river.artifacts.common.ResultRow;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
22 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
24 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
26
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
27 /**
9067
2ed3824a3d53 sinfo access collision, floodDuration
gernotbelger
parents: 8997
diff changeset
28 * Contains the results of a {@link FloodDurationCalculation}.
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
29 *
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
30 * @author Gernot Belger
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
31 */
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
32 final class FlowDepthMinMaxCalculationResult extends AbstractCalculationExportableResult {
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
33
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
34 private static final long serialVersionUID = 1L;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
35 private static final String JASPER_FILE = "/jasper/templates/sinfo.flowdepthminmax.jrxml";
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
36
8993
0adc6d04de95 SInfo - FlowDepthMinMax: choosing bed heights, not bed height min and max separately
gernotbelger
parents: 8950
diff changeset
37 private final BedHeightInfo sounding;
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
38 private final WstInfo wst;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
39
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
40 public FlowDepthMinMaxCalculationResult(final String label, final WstInfo wst, final BedHeightInfo sounding, final Collection<ResultRow> rows) {
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
41 super(label, rows);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
42 this.wst = wst;
8993
0adc6d04de95 SInfo - FlowDepthMinMax: choosing bed heights, not bed height min and max separately
gernotbelger
parents: 8950
diff changeset
43 this.sounding = sounding;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
44 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
45
8993
0adc6d04de95 SInfo - FlowDepthMinMax: choosing bed heights, not bed height min and max separately
gernotbelger
parents: 8950
diff changeset
46 public BedHeightInfo getSounding() {
0adc6d04de95 SInfo - FlowDepthMinMax: choosing bed heights, not bed height min and max separately
gernotbelger
parents: 8950
diff changeset
47 return this.sounding;
8950
b0aeed4c97c1 Implemented chart output for sinfo flow depth min/max calculation
gernotbelger
parents: 8948
diff changeset
48 }
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
49
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
50 @Override
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
51 public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
52
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
53 final Collection<String> header = new ArrayList<>(11);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
54
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
55 header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
56 header.add(exportContextCSV.msgUnitCSV(SInfoResultType.flowdepthmin));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
57 header.add(exportContextCSV.msgUnitCSV(SInfoResultType.flowdepthmax));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
58 header.add(exportContextCSV.msgUnitCSV(SInfoResultType.waterlevel, river.getWstUnit()));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
59 header.add(exportContextCSV.msgUnitCSV(SInfoResultType.discharge));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
60 header.add(exportContextCSV.formatCsvHeader(SInfoResultType.waterlevelLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
61 header.add(exportContextCSV.formatCsvHeader(SInfoResultType.gaugeLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
62 header.add(exportContextCSV.msgUnitCSV(SInfoResultType.meanBedHeight, river.getWstUnit()));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
63 header.add(exportContextCSV.formatCsvHeader(SInfoResultType.soundingLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
64 header.add(exportContextCSV.formatCsvHeader(SInfoResultType.location));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
65
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
66 exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
67
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
68 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
69
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
70 @Override
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
71 protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
72
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
73 exportContextCSV.writeCSVSoundingMetadata(this.sounding);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
74 exportContextCSV.writeBlankLine();
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
75
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
76 exportContextCSV.writeCSVWaterlevelMetadata(this.wst);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
77 exportContextCSV.writeBlankLine();
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
78
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
79 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
80
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
81 @Override
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
82 protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final ResultRow row) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
83
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
84 return formatRow(exportContextCSV, row);
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
85 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
86
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
87 @Override
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
88 protected String[] formatPDFRow(final ExportContextPDF exportContextPDF, final ResultRow row) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
89
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
90 return formatRow(exportContextPDF, row);
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
91 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
92
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
93 @Override
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
94 protected String getJasperFile() {
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
95 return this.JASPER_FILE;
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
96 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
97
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
98 @Override
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
99 protected void addJRTableHeader(final ExportContextPDF exportContextPDF, final MetaAndTableJRDataSource source) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
100
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
101 /* column headings */
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
102 exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
103 exportContextPDF.addJRMetadata(source, "flowdepthmin_header", SInfoResultType.flowdepthmin);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
104 exportContextPDF.addJRMetadata(source, "flowdepthmax_header", SInfoResultType.flowdepthmax);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
105 exportContextPDF.addJRMetadata(source, "waterlevel_header", SInfoResultType.waterlevel);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
106 exportContextPDF.addJRMetadata(source, "discharge_header", SInfoResultType.discharge);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
107 exportContextPDF.addJRMetadata(source, "waterlevel_name_header", SInfoResultType.waterlevelLabel);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
108 exportContextPDF.addJRMetadata(source, "gauge_header", SInfoResultType.gaugeLabel);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
109 exportContextPDF.addJRMetadata(source, "bedheight_header", SInfoResultType.meanBedHeight);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
110 exportContextPDF.addJRMetadata(source, "sounding_name_header", SInfoResultType.soundingLabel);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
111 exportContextPDF.addJRMetadata(source, "location_header", SInfoResultType.location);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
112
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
113 }
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
114
9195
a4121ec450d6 'ca.'-issue
gernotbelger
parents: 9150
diff changeset
115 protected String[] formatRow(final IExportContext exportContextCSV, final ResultRow row) {
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
116
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
117 final Collection<String> lines = new ArrayList<>(10);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
118
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
119 lines.add(exportContextCSV.formatRowValue(row, GeneralResultType.station));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
120
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
121 // REMARK: null check as pdf will call this with null and in that case we show all columns (to avoid multiple jasper
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
122 // FIXME: does not work like this: we may have several pairs of min/max; so we need to look at all of them?
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
123 // templates)
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
124 // if (result == null || result.getMinSounding() != null)
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
125 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.flowdepthmin));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
126 // if (result == null || result.getMaxSounding() != null)
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
127 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.flowdepthmax));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
128
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
129 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.waterlevel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
130 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.discharge));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
131 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.waterlevelLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
132 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.gaugeLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
133 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.meanBedHeight));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
134 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.soundingLabel));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
135 lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.location));
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
136
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
137 return lines.toArray(new String[lines.size()]);
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9067
diff changeset
138 }
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents:
diff changeset
139 }

http://dive4elements.wald.intevation.org