Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.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 | 7b2b086e45f0 |
comparison
equal
deleted
inserted
replaced
9315:2ff46d921917 | 9316:72b3270e1568 |
---|---|
8 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
9 */ | 9 */ |
10 package org.dive4elements.river.artifacts.uinfo.salix; | 10 package org.dive4elements.river.artifacts.uinfo.salix; |
11 | 11 |
12 import java.util.ArrayList; | 12 import java.util.ArrayList; |
13 import java.util.Iterator; | |
14 import java.util.List; | 13 import java.util.List; |
15 import java.util.Map; | |
16 import java.util.NavigableMap; | 14 import java.util.NavigableMap; |
17 import java.util.TreeMap; | 15 import java.util.TreeMap; |
18 | 16 |
19 import org.apache.commons.lang.math.DoubleRange; | |
20 import org.dive4elements.artifacts.CallContext; | 17 import org.dive4elements.artifacts.CallContext; |
21 import org.dive4elements.river.artifacts.access.RangeAccess; | 18 import org.dive4elements.river.artifacts.access.RangeAccess; |
22 import org.dive4elements.river.artifacts.model.Calculation; | 19 import org.dive4elements.river.artifacts.model.Calculation; |
23 import org.dive4elements.river.artifacts.model.CalculationResult; | 20 import org.dive4elements.river.artifacts.model.CalculationResult; |
24 import org.dive4elements.river.artifacts.resources.Resources; | 21 import org.dive4elements.river.artifacts.resources.Resources; |
72 final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, accessSalix.getRange()); | 69 final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, accessSalix.getRange()); |
73 | 70 |
74 final SalixLineCalculator calculator = new SalixLineCalculator(this.context, riverInfoProvider); | 71 final SalixLineCalculator calculator = new SalixLineCalculator(this.context, riverInfoProvider); |
75 final NavigableMap<Double, List<Double>> rangeScenarios = buildRangeScenarios(accessSalix); | 72 final NavigableMap<Double, List<Double>> rangeScenarios = buildRangeScenarios(accessSalix); |
76 | 73 |
77 calculator.execute(problems, uinfo, rangeScenarios, accessSalix.getScenario(), results); | 74 calculator.execute(problems, uinfo, rangeScenarios, accessSalix.getScenario(), buildScenarioLabels(accessSalix), results); |
78 | 75 |
79 // final Collection<ResultRow> rows = new ArrayList<>(); | 76 // final Collection<ResultRow> rows = new ArrayList<>(); |
80 // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die | 77 // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die |
81 // Abstraktion. ist erstmal nur ne idee | 78 // Abstraktion. ist erstmal nur ne idee |
82 // final ResultRow row1 = ResultRow.create(). // | 79 // final ResultRow row1 = ResultRow.create(). // |
150 // } | 147 // } |
151 // } | 148 // } |
152 // results.addResult(result, problems); | 149 // results.addResult(result, problems); |
153 return new CalculationResult(results, problems); | 150 return new CalculationResult(results, problems); |
154 } | 151 } |
152 | |
153 // private SalixScenario findScenarioByKm(final double km, final Map<DoubleRange, SalixScenario> rangeScenarioMap) { | |
154 // final Iterator<DoubleRange> rangeIterator = rangeScenarioMap.keySet().iterator(); | |
155 // while (rangeIterator.hasNext()) { | |
156 // final DoubleRange range = rangeIterator.next(); | |
157 // if (range.containsDouble(km + 0.0001)) { | |
158 // return rangeScenarioMap.get(range); | |
159 // } | |
160 // } | |
161 // return null; | |
162 // } | |
155 | 163 |
156 /** | 164 /** |
157 * Build a map of delta-Ws by km-range for the selected scenario | 165 * Build a map of delta-Ws by km-range for the selected scenario |
158 */ | 166 */ |
159 private NavigableMap<Double, List<Double>> buildRangeScenarios(final SalixLineAccess access) { | 167 private NavigableMap<Double, List<Double>> buildRangeScenarios(final SalixLineAccess access) { |
206 dwsm.add(part.getDwsplValue() / 100.0); | 214 dwsm.add(part.getDwsplValue() / 100.0); |
207 rangeScenarios.put(Double.valueOf(part.getFromKm().doubleValue() - 0.0001), dwsm); | 215 rangeScenarios.put(Double.valueOf(part.getFromKm().doubleValue() - 0.0001), dwsm); |
208 } | 216 } |
209 } | 217 } |
210 | 218 |
211 private SalixScenario findScenarioByKm(final double km, final Map<DoubleRange, SalixScenario> rangeScenarioMap) { | 219 /** |
212 final Iterator<DoubleRange> rangeIterator = rangeScenarioMap.keySet().iterator(); | 220 * Build the list of delta-w labels for the scenario type |
213 while (rangeIterator.hasNext()) { | 221 */ |
214 final DoubleRange range = rangeIterator.next(); | 222 private String[] buildScenarioLabels(final SalixLineAccess access) { |
215 if (range.containsDouble(km + 0.0001)) { | 223 final List<String> labels = new ArrayList<>(); |
216 return rangeScenarioMap.get(range); | 224 if (access.getScenario() == ScenarioType.REGIONAL) { |
217 } | 225 final int[] deltaws = access.getRegionalScenarioIntegers(); |
226 for (int i = 0; i <= deltaws.length - 1; i++) | |
227 if (deltaws[i] != 0) | |
228 labels.add(Integer.toString(deltaws[i]) + " cm"); | |
218 } | 229 } |
219 return null; | 230 return labels.toArray(new String[labels.size()]); |
220 } | 231 } |
221 } | 232 } |