Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculationRegionalResult.java @ 9316:72b3270e1568
U-Info salix line with regional and supraregional scenario calculation and chart display
author | mschaefer |
---|---|
date | Thu, 26 Jul 2018 17:28:32 +0200 |
parents | 9a9f076d5716 |
children | c36befc9011c |
comparison
equal
deleted
inserted
replaced
9315:2ff46d921917 | 9316:72b3270e1568 |
---|---|
12 import java.text.NumberFormat; | 12 import java.text.NumberFormat; |
13 import java.util.Collection; | 13 import java.util.Collection; |
14 import java.util.List; | 14 import java.util.List; |
15 | 15 |
16 import org.dive4elements.river.artifacts.common.ExportContextCSV; | 16 import org.dive4elements.river.artifacts.common.ExportContextCSV; |
17 import org.dive4elements.river.artifacts.common.GeneralResultType; | |
17 import org.dive4elements.river.artifacts.common.IExportContext; | 18 import org.dive4elements.river.artifacts.common.IExportContext; |
18 import org.dive4elements.river.artifacts.common.ResultRow; | 19 import org.dive4elements.river.artifacts.common.ResultRow; |
19 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 20 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
20 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; | |
21 import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType; | 21 import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType; |
22 | |
23 import gnu.trove.TDoubleArrayList; | |
22 | 24 |
23 /** | 25 /** |
24 * @author Domenico Nardi Tironi | 26 * @author Domenico Nardi Tironi |
25 */ | 27 */ |
26 final class SalixLineCalculationRegionalResult extends SalixLineCalculationNoScenarioResult { | 28 final class SalixLineCalculationRegionalResult extends SalixLineCalculationNoScenarioResult { |
27 | 29 |
28 private static final long serialVersionUID = 1L; | 30 private static final long serialVersionUID = 1L; |
29 | 31 |
30 public SalixLineCalculationRegionalResult(final String label, final WstInfo wst, final Collection<ResultRow> rows) { | 32 private final String[] scenarioLabels; |
31 super(label, wst, rows); | 33 |
34 public SalixLineCalculationRegionalResult(final String label, final String[] scenarioLabels, final Collection<ResultRow> rows) { | |
35 super(label, rows); | |
36 this.scenarioLabels = scenarioLabels; | |
37 } | |
38 | |
39 public final int getScenarioCount() { | |
40 return (this.scenarioLabels != null) ? this.scenarioLabels.length : 0; | |
41 } | |
42 | |
43 public String getScenarioLabel(final int i) { | |
44 if ((this.scenarioLabels != null) && (i < this.scenarioLabels.length)) | |
45 return this.scenarioLabels[i]; | |
46 else | |
47 return ""; | |
32 } | 48 } |
33 | 49 |
34 @Override | 50 @Override |
35 public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) { | 51 public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) { |
36 | 52 |
37 final Collection<String> header = super.writeNoScenarioHeader(exportContextCSV); | 53 final Collection<String> header = super.writeNoScenarioHeader(exportContextCSV); |
38 | 54 |
39 header.add(exportContextCSV.msg(SalixScenario.getScenarioValueHeader())); | 55 for (int i = 1; i <= getScenarioCount(); i++) { |
40 header.add(exportContextCSV.msg(SalixScenario.getDwsplHeader())); | 56 header.add(exportContextCSV.msg(SalixScenario.getScenarioValueHeader())); |
41 | 57 header.add(exportContextCSV.msg(SalixScenario.getDwsplHeader())); |
58 } | |
42 exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); | 59 exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); |
43 } | 60 } |
44 | 61 |
45 @Override | 62 @Override |
46 protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) { | 63 protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) { |
48 exportContextCSV.writeBlankLine(); | 65 exportContextCSV.writeBlankLine(); |
49 | 66 |
50 } | 67 } |
51 | 68 |
52 @Override | 69 @Override |
53 protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final ResultRow row) { | 70 protected String[] formatRow(final IExportContext context, final ResultRow row) { |
54 | |
55 return formatRow(exportContextCSV, row); | |
56 } | |
57 | |
58 private String[] formatRow(final IExportContext context, final ResultRow row) { | |
59 | 71 |
60 final Collection<String> lines = super.getNoScenarioFormat(row, context); | 72 final Collection<String> lines = super.getNoScenarioFormat(row, context); |
61 | 73 |
62 if (context instanceof ExportContextCSV) { // enum gespart - pdf-export hat ja nur die drei spalten | 74 if (context instanceof ExportContextCSV) { // enum gespart - pdf-export hat ja nur die drei spalten |
63 final NumberFormat formatter = ((ExportContextCSV) context).getSalixScenFormatter(); | 75 final NumberFormat formatter = ((ExportContextCSV) context).getSalixScenFormatter(); |
75 private void writeRegionalEffectsCSVMetadata(final ExportContextCSV exportContextCSV) { | 87 private void writeRegionalEffectsCSVMetadata(final ExportContextCSV exportContextCSV) { |
76 final String main = "uinfo.export.csv.meta.header.salix.regional"; | 88 final String main = "uinfo.export.csv.meta.header.salix.regional"; |
77 // "##Regional wirkende Eingriffe" | 89 // "##Regional wirkende Eingriffe" |
78 exportContextCSV.writeCSVMetaEntry(main); | 90 exportContextCSV.writeCSVMetaEntry(main); |
79 writeRegionalCommonCSVMeta(exportContextCSV); | 91 writeRegionalCommonCSVMeta(exportContextCSV); |
92 } | |
93 | |
94 /** | |
95 * Gets a longitudinal section of W, Q, or flood duration of one of the waterlevels | |
96 */ | |
97 public final double[][] getScenarioPoints(final int dataIndex) { | |
98 | |
99 final Collection<ResultRow> rows = getRows(); | |
100 | |
101 final TDoubleArrayList xPoints = new TDoubleArrayList(rows.size()); | |
102 final TDoubleArrayList yPoints = new TDoubleArrayList(rows.size()); | |
103 | |
104 for (final ResultRow row : rows) { | |
105 | |
106 final double station = row.getDoubleValue(GeneralResultType.station); | |
107 | |
108 final List<SalixScenario> scenarios = (List<SalixScenario>) row.getValue(UInfoResultType.customMultiRowColSalixRegionalValue_Dwspl); | |
109 if (dataIndex <= scenarios.size() - 1) { | |
110 final double value = scenarios.get(dataIndex).getSalixValue(); | |
111 xPoints.add(station); | |
112 yPoints.add(value); | |
113 } | |
114 } | |
115 | |
116 return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; | |
80 } | 117 } |
81 | 118 |
82 // TODO: move to SupraRegionalEffectsResult-Class; remove here | 119 // TODO: move to SupraRegionalEffectsResult-Class; remove here |
83 // private void writeExtendedRegionalEffectsCSVMetadata(final ExportContextCSV exportContextCSV) { | 120 // private void writeExtendedRegionalEffectsCSVMetadata(final ExportContextCSV exportContextCSV) { |
84 // final String main = "uinfo.export.csv.meta.header.salix.regionalextended"; | 121 // final String main = "uinfo.export.csv.meta.header.salix.regionalextended"; |