annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculationResult.java @ 9443:515643b2c49a

Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
author mschaefer
date Mon, 20 Aug 2018 18:50:33 +0200
parents e8b1255fc89e
children 853f2dafc16e
rev   line source
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
2 * Software engineering by
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
5 *
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
9 */
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
10 package org.dive4elements.river.artifacts.uinfo.salix;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
11
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
12 import java.text.NumberFormat;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
13 import java.util.ArrayList;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
14 import java.util.Collection;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
15 import java.util.List;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
16
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
17 import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
9364
0124d67ce5ab salix pdf export fix
gernotbelger
parents: 9361
diff changeset
18 import org.dive4elements.river.artifacts.common.AbstractExportContext;
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
19 import org.dive4elements.river.artifacts.common.ExportContextCSV;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
20 import org.dive4elements.river.artifacts.common.ExportContextPDF;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
21 import org.dive4elements.river.artifacts.common.GeneralResultType;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
22 import org.dive4elements.river.artifacts.common.IExportContext;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
23 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
24 import org.dive4elements.river.artifacts.common.ResultRow;
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
25 import org.dive4elements.river.artifacts.model.Calculation;
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
26 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
27 import org.dive4elements.river.artifacts.uinfo.common.UInfoResultType;
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
28 import org.dive4elements.river.artifacts.uinfo.salix.SalixLineCrossSectionIndexData.SalixWaterlevel;
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
29
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
30 import gnu.trove.TDoubleArrayList;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
31
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
32 /**
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
33 * @author Domenico Nardi Tironi
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
34 */
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
35 class SalixLineCalculationResult extends AbstractCalculationExportableResult {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
36
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
37 private static final long serialVersionUID = 1L;
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
38
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
39 private static final String JASPER_FILE = "/jasper/templates/uinfo.salixline.jrxml";
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
40
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
41 private static final double STATION_TOLERANCE = 0.1d;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
42
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
43 private final String[] scenarioLabels;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
44
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
45 private final String partialRangeString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
46
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
47 private final String deltaWString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
48
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
49 public SalixLineCalculationResult(final String label, final Collection<ResultRow> rows) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
50 this(label, new String[] {}, "", "", rows);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
51 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
52
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
53 public SalixLineCalculationResult(final String label, final String[] scenarioLabels, final String partialRangeString, final String deltaWString,
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
54 final Collection<ResultRow> rows) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
55 super(label, rows);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
56 this.scenarioLabels = scenarioLabels;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
57 this.partialRangeString = partialRangeString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
58 this.deltaWString = deltaWString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
59 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
60
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
61 public final int getScenarioCount() {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
62 return (this.scenarioLabels != null) ? this.scenarioLabels.length : 0;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
63 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
64
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
65 public String getScenarioLabel(final int i) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
66 if ((this.scenarioLabels != null) && (i < this.scenarioLabels.length))
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
67 return this.scenarioLabels[i];
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
68
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
69 return "";
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
70 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
71
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
72 public String getPartialRangeString() {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
73 return this.partialRangeString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
74 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
75
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
76 public String getDeltaWString() {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
77 return this.deltaWString;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
78 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
79
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
80 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
81 public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
82
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
83 final Collection<String> header = new ArrayList<>();
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
84
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
85 header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
86 header.add(exportContextCSV.formatCsvHeader(UInfoResultType.salixline));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
87 header.add(exportContextCSV.formatCsvHeader(UInfoResultType.salix_mw_mnw));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
88
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
89 for (int i = 1; i <= getScenarioCount(); i++) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
90 header.add(exportContextCSV.msg(SalixScenario.getDeltaWHeader()));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
91 header.add(exportContextCSV.msg(SalixScenario.getScenarioValueHeader()));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
92 }
9397
6e7094368e97 Added gauge name column for uinfo iota
mschaefer
parents: 9364
diff changeset
93 header.add(exportContextCSV.formatCsvHeader(GeneralResultType.gaugeLabel));
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
94 exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
95 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
96
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
97 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
98 protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final ResultRow row) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
99 return formatRow(exportContextCSV, row);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
100 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
101
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
102 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
103 protected String[] formatPDFRow(final ExportContextPDF exportContextPDF, final ResultRow row) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
104 return formatRow(exportContextPDF, row);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
105 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
106
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
107 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
108 protected String getJasperFile() {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
109 return JASPER_FILE;
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
110 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
111
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
112 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
113 protected void addJRTableHeader(final ExportContextPDF exportContextPDF, final MetaAndTableJRDataSource source) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
114
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
115 /* additional column headings */
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
116 exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
117 exportContextPDF.addJRMetadata(source, "salix_line", UInfoResultType.salixline);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
118 exportContextPDF.addJRMetadata(source, "salix_delta_mw", UInfoResultType.salix_mw_mnw);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
119
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
120 for (int i = 1; i <= this.getScenarioCount(); i++) {
9406
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
121 // TODO Spaltenueberschriften der Scenarios (falls gefordert)
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
122 }
9397
6e7094368e97 Added gauge name column for uinfo iota
mschaefer
parents: 9364
diff changeset
123 exportContextPDF.addJRMetadata(source, "gauge_header", GeneralResultType.gaugeLabel);
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
124 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
125
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
126 private String[] formatRow(final IExportContext context, final ResultRow row) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
127
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
128 final Collection<String> lines = new ArrayList<>();
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
129 lines.add(context.formatRowValue(row, GeneralResultType.station));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
130 lines.add(context.formatRowValue(row, UInfoResultType.salixline));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
131 lines.add(context.formatRowValue(row, UInfoResultType.salix_mw_mnw));
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
132
9406
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
133 if (context instanceof ExportContextCSV) {
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
134 final NumberFormat formatter = ((AbstractExportContext) context).getSalixScenFormatter();
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
135 final List<SalixScenario> scenarios = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixScenarios);
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
136 for (int i = 1; i <= this.getScenarioCount(); i++) {
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
137 if (i > scenarios.size())
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
138 break;
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
139 if (scenarios.get(i - 1) != null) {
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
140 lines.add(scenarios.get(i - 1).getDeltaWFormatted());
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
141 lines.add(scenarios.get(i - 1).getSalixValueFormatted(formatter));
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
142 } else {
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
143 lines.add("");
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
144 lines.add("");
55e3b1a8aa06 salix pdf export column added
gernotbelger
parents: 9397
diff changeset
145 }
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
146 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
147 }
9397
6e7094368e97 Added gauge name column for uinfo iota
mschaefer
parents: 9364
diff changeset
148 lines.add(context.formatRowValue(row, GeneralResultType.gaugeLabel));
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
149 return lines.toArray(new String[lines.size()]);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
150 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
151
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
152 @Override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
153 protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
154 // do nothing. subclass may override
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
155 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
156
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
157 /**
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
158 * Gets a longitudinal section of the salix value of a scenario
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
159 */
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
160 public final double[][] getScenarioPoints(final int dataIndex) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
161
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
162 final Collection<ResultRow> rows = getRows();
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
163
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
164 final TDoubleArrayList xPoints = new TDoubleArrayList(rows.size());
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
165 final TDoubleArrayList yPoints = new TDoubleArrayList(rows.size());
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
166
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
167 for (final ResultRow row : rows) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
168
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
169 final double station = row.getDoubleValue(GeneralResultType.station);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
170
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
171 final List<SalixScenario> scenarios = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixScenarios);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
172 if (dataIndex <= scenarios.size() - 1) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
173 final SalixScenario salixScenario = scenarios.get(dataIndex);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
174 if (salixScenario != null) {
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
175 final double value = salixScenario.getSalixValue();
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
176 xPoints.add(station);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
177 yPoints.add(value);
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
178 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
179 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
180 }
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
181
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
182 return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() };
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
183 }
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
184
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
185 public final double getSalixValue(final double currentKm, final double nextKm, final double prevKm) {
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
186
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
187 final ResultRow row = getRowForStation(currentKm, STATION_TOLERANCE);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
188 if (row == null)
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
189 return Double.NaN;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
190
9430
e8b1255fc89e Added calculation of salix hw5 and salix line w
mschaefer
parents: 9429
diff changeset
191 return row.getDoubleValue(UInfoResultType.salixw);
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
192 }
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
193
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
194 public final double getSalixScenarioValue(final double currentKm, final double nextKm, final double prevKm, final int scenarioIndex) {
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
195 final ResultRow row = getRowForStation(currentKm, STATION_TOLERANCE);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
196 if (row == null)
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
197 return Double.NaN;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
198
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
199 final List<SalixScenario> scenarios = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixScenarios);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
200 final SalixScenario salixScenario = scenarios.get(scenarioIndex);
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
201 if (salixScenario == null)
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
202 return Double.NaN;
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
203
9430
e8b1255fc89e Added calculation of salix hw5 and salix line w
mschaefer
parents: 9429
diff changeset
204 return salixScenario.getSalixW();
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
205 }
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
206
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
207 public final double getWaterlevelValue(final double currentKm, final double nextKm, final double prevKm, final SalixWaterlevel waterlevel) {
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
208
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
209 final ResultRow row = getRowForStation(currentKm, STATION_TOLERANCE);
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
210 if (row == null)
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
211 return Double.NaN;
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
212
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
213 switch (waterlevel) {
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
214 case mnw:
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
215 return row.getDoubleValue(UInfoResultType.waterlevelMNW);
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
216 case mw:
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
217 return row.getDoubleValue(UInfoResultType.waterlevelMW);
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
218 case mhw:
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
219 return row.getDoubleValue(UInfoResultType.waterlevelMHW);
9430
e8b1255fc89e Added calculation of salix hw5 and salix line w
mschaefer
parents: 9429
diff changeset
220 case hw5:
9429
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
221 return row.getDoubleValue(UInfoResultType.waterlevelMH5);
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
222
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
223 default:
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
224 throw new UnsupportedOperationException();
bd5f5d2220fa Work on salix cross sections; waterlevels work now with different colors
gernotbelger
parents: 9426
diff changeset
225 }
9426
b6e595f1696f Activated cross section output mode for salix line and implemented some themes preliminary.
gernotbelger
parents: 9406
diff changeset
226 }
9443
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
227
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
228 /**
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
229 * Computes the height of a vegetation zone type for a station and a salix calculation result
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
230 */
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
231 public double computeVegetationZoneHeight(final double station, final int vegetationZoneType, final SalixLineCalculationResult result) {
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
232
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
233 final Calculation problems = new Calculation();
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
234
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
235 final SalixLineCalculator calculator = new SalixLineCalculator(null);
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
236 return calculator.computeVegetationZoneHeight(problems, station, vegetationZoneType, result);
515643b2c49a Added computation of uinfo salix line vegetation zone height (not yet connected to the cross section facet)
mschaefer
parents: 9430
diff changeset
237 }
9361
2aec052d4088 Refactoring on SalixLineCalculationResult etc., calculation using MQ etc., scenario (regional+supra) csv columns and meta data added
mschaefer
parents:
diff changeset
238 }

http://dive4elements.wald.intevation.org