comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java @ 9321:a978b601a034

Salix: Fixed ArrrayoutOfBoundsException; minor cleanup
author gernotbelger
date Fri, 27 Jul 2018 10:25:09 +0200
parents 7b2b086e45f0
children 2aec052d4088
comparison
equal deleted inserted replaced
9320:61e6d158a20f 9321:a978b601a034
12 import java.util.ArrayList; 12 import java.util.ArrayList;
13 import java.util.List; 13 import java.util.List;
14 import java.util.NavigableMap; 14 import java.util.NavigableMap;
15 import java.util.TreeMap; 15 import java.util.TreeMap;
16 16
17 import org.apache.commons.lang.math.DoubleRange;
17 import org.dive4elements.artifacts.CallContext; 18 import org.dive4elements.artifacts.CallContext;
18 import org.dive4elements.river.artifacts.access.RangeAccess; 19 import org.dive4elements.river.artifacts.access.RangeAccess;
19 import org.dive4elements.river.artifacts.model.Calculation; 20 import org.dive4elements.river.artifacts.model.Calculation;
20 import org.dive4elements.river.artifacts.model.CalculationResult; 21 import org.dive4elements.river.artifacts.model.CalculationResult;
21 import org.dive4elements.river.artifacts.resources.Resources; 22 import org.dive4elements.river.artifacts.resources.Resources;
47 final SalixLineAccess accessSalix = new SalixLineAccess(uinfo); 48 final SalixLineAccess accessSalix = new SalixLineAccess(uinfo);
48 49
49 final River river = accessSalix.getRiver(); 50 final River river = accessSalix.getRiver();
50 final RiverInfo riverInfo = new RiverInfo(river); 51 final RiverInfo riverInfo = new RiverInfo(river);
51 52
52 // final DoubleRange range = accessSalix.getRange(); 53 final DoubleRange range = accessSalix.getRange();
53 // final boolean useScenario = accessSalix.getUseScenario(); 54
54 // final String selectedScenario = accessSalix.getScenario(); 55 final ScenarioType scenarioType = accessSalix.getScenario();
55 // final Double fromPart = accessSalix.getFromPart(); 56
56 // final Double toPart = accessSalix.getToPart(); 57 final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, range);
57 // 58
58 // final boolean useSCenario = accessSalix.getUseScenario(); 59 final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, range);
59 // final String scenario = accessSalix.getScenario(); 60
60 // calculation_mode 61 final SalixLineCalculator calculator = new SalixLineCalculator(riverInfoProvider);
61 // ld_from , ld_to
62 // use_scenario (boolean)
63 // ld_from_part; ld_to_part
64 // scenario_selection (mögliche Werte:"scenarioType.option1" "scenarioType.option2" "scenarioType.option3"
65 final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, accessSalix.getRange());
66
67 // FIXME: real calculation
68
69 final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, accessSalix.getRange());
70
71 final SalixLineCalculator calculator = new SalixLineCalculator(this.context, riverInfoProvider);
72 final NavigableMap<Double, List<Double>> rangeScenarios = buildRangeScenarios(accessSalix); 62 final NavigableMap<Double, List<Double>> rangeScenarios = buildRangeScenarios(accessSalix);
73 63
74 calculator.execute(problems, uinfo, rangeScenarios, accessSalix.getScenario(), buildScenarioLabels(accessSalix), results); 64 calculator.execute(problems, uinfo, rangeScenarios, scenarioType, buildScenarioLabels(accessSalix), results);
75 65
76 // final Collection<ResultRow> rows = new ArrayList<>(); 66 // final Collection<ResultRow> rows = new ArrayList<>();
77 // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die 67 // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die
78 // Abstraktion. ist erstmal nur ne idee 68 // Abstraktion. ist erstmal nur ne idee
79 // final ResultRow row1 = ResultRow.create(). // 69 // final ResultRow row1 = ResultRow.create(). //
147 // } 137 // }
148 // } 138 // }
149 // results.addResult(result, problems); 139 // results.addResult(result, problems);
150 return new CalculationResult(results, problems); 140 return new CalculationResult(results, problems);
151 } 141 }
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 // }
163 142
164 /** 143 /**
165 * Build a map of delta-Ws by km-range for the selected scenario 144 * Build a map of delta-Ws by km-range for the selected scenario
166 */ 145 */
167 private NavigableMap<Double, List<Double>> buildRangeScenarios(final SalixLineAccess access) { 146 private NavigableMap<Double, List<Double>> buildRangeScenarios(final SalixLineAccess access) {
173 fillRangeScenarios(rangeScenarios, access.getSupraRegionalString()); 152 fillRangeScenarios(rangeScenarios, access.getSupraRegionalString());
174 // TODO else if (access.getScenario().equals(ScenarioType.HISTORICAL.getKey())) 153 // TODO else if (access.getScenario().equals(ScenarioType.HISTORICAL.getKey()))
175 // historisches Szenario aus MSH etc. 154 // historisches Szenario aus MSH etc.
176 else 155 else
177 fillRangeScenarios(rangeScenarios, access); 156 fillRangeScenarios(rangeScenarios, access);
157
178 return rangeScenarios; 158 return rangeScenarios;
179 } 159 }
180 160
181 /** 161 /**
182 * Fill a map of delta-Ws with only one 0-delta for the whole calc range (no scenario) 162 * Fill a map of delta-Ws with only one 0-delta for the whole calc range (no scenario)

http://dive4elements.wald.intevation.org