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";

http://dive4elements.wald.intevation.org