annotate artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculationRegionalResult.java @ 9319:c36befc9011c

Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
author gernotbelger
date Fri, 27 Jul 2018 10:18:18 +0200
parents 72b3270e1568
children b3d3c958a594
rev   line source
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
2 * Software engineering by
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
5 *
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
9 */
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.uinfo.salix;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
11
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
12 import java.text.NumberFormat;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
13 import java.util.Collection;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
14 import java.util.List;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
15
9319
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
16 import org.apache.commons.lang.StringUtils;
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.artifacts.common.ExportContextCSV;
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
18 import org.dive4elements.river.artifacts.common.GeneralResultType;
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.common.IExportContext;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.artifacts.common.ResultRow;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
23
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
24 import gnu.trove.TDoubleArrayList;
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
25
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
26 /**
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
27 * @author Domenico Nardi Tironi
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
28 */
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
29 final class SalixLineCalculationRegionalResult extends SalixLineCalculationNoScenarioResult {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
30
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
31 private static final long serialVersionUID = 1L;
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
32
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
33 private final String[] scenarioLabels;
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
34
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
35 public SalixLineCalculationRegionalResult(final String label, final String[] scenarioLabels, final Collection<ResultRow> rows) {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
36 super(label, rows);
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
37 this.scenarioLabels = scenarioLabels;
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
38 }
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
39
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
40 public final int getScenarioCount() {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
41 return (this.scenarioLabels != null) ? this.scenarioLabels.length : 0;
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
42 }
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
43
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
44 public String getScenarioLabel(final int i) {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
45 if ((this.scenarioLabels != null) && (i < this.scenarioLabels.length))
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
46 return this.scenarioLabels[i];
9319
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
47
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
48 return "";
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
49 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
50
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
51 @Override
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
52 public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
53
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
54 final Collection<String> header = super.writeNoScenarioHeader(exportContextCSV);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
55
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
56 for (int i = 1; i <= getScenarioCount(); i++) {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
57 header.add(exportContextCSV.msg(SalixScenario.getScenarioValueHeader()));
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
58 header.add(exportContextCSV.msg(SalixScenario.getDwsplHeader()));
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
59 }
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
60 exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
61 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
62
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
63 @Override
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
64 protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
65 writeRegionalEffectsCSVMetadata(exportContextCSV);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
66 exportContextCSV.writeBlankLine();
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
67 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
68
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
69 @Override
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
70 protected String[] formatRow(final IExportContext context, final ResultRow row) {
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
71
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
72 final Collection<String> lines = super.getNoScenarioFormat(row, context);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
73
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
74 if (context instanceof ExportContextCSV) { // enum gespart - pdf-export hat ja nur die drei spalten
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
75 final NumberFormat formatter = ((ExportContextCSV) context).getSalixScenFormatter();
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
76 final List<SalixScenario> scenList = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixRegionalValue_Dwspl);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
77
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
78 for (final SalixScenario scenario : scenList) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
79 // scenario unused; index wurde ja verworfen, stattdessen 2 spalten
9319
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
80 if (scenario == null) {
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
81 lines.add(StringUtils.EMPTY);
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
82 lines.add(StringUtils.EMPTY);
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
83 } else {
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
84 lines.add(scenario.getSalixValueFormatted(formatter));
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
85 lines.add(scenario.getDwsplFormatted());
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
86 }
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
87 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
88 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
89 return lines.toArray(new String[lines.size()]);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
90 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
91
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
92 private void writeRegionalEffectsCSVMetadata(final ExportContextCSV exportContextCSV) {
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
93 final String main = "uinfo.export.csv.meta.header.salix.regional";
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
94 // "##Regional wirkende Eingriffe"
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
95 exportContextCSV.writeCSVMetaEntry(main);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
96 writeRegionalCommonCSVMeta(exportContextCSV);
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
97 }
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
98
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
99 /**
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
100 * Gets a longitudinal section of W, Q, or flood duration of one of the waterlevels
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
101 */
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
102 public final double[][] getScenarioPoints(final int dataIndex) {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
103
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
104 final Collection<ResultRow> rows = getRows();
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
105
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
106 final TDoubleArrayList xPoints = new TDoubleArrayList(rows.size());
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
107 final TDoubleArrayList yPoints = new TDoubleArrayList(rows.size());
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
108
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
109 for (final ResultRow row : rows) {
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
110
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
111 final double station = row.getDoubleValue(GeneralResultType.station);
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
112
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
113 final List<SalixScenario> scenarios = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixRegionalValue_Dwspl);
9319
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
114 final SalixScenario salixScenario = scenarios.get(dataIndex);
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
115 if (salixScenario != null) {
c36befc9011c Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
gernotbelger
parents: 9316
diff changeset
116 final double value = salixScenario.getSalixValue();
9316
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
117 xPoints.add(station);
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
118 yPoints.add(value);
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
119 }
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
120 }
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
121
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
122 return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() };
72b3270e1568 U-Info salix line with regional and supraregional scenario calculation and chart display
mschaefer
parents: 9309
diff changeset
123 }
9243
da0bdbcd6f09 salix.supraRegional+Regional results
gernotbelger
parents:
diff changeset
124 }

http://dive4elements.wald.intevation.org