Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java @ 9295:385b52ccde23
Work on U-Info salix line calculation and chart (no scenario case)
author | mschaefer |
---|---|
date | Tue, 24 Jul 2018 18:51:47 +0200 |
parents | 600e1ac42049 |
children | 9a9f076d5716 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java Tue Jul 24 16:55:43 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java Tue Jul 24 18:51:47 2018 +0200 @@ -9,24 +9,18 @@ */ package org.dive4elements.river.artifacts.uinfo.salix; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; import org.apache.commons.lang.math.DoubleRange; import org.dive4elements.artifacts.CallContext; -import org.dive4elements.river.artifacts.common.GeneralResultType; -import org.dive4elements.river.artifacts.common.ResultRow; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.CalculationResult; import org.dive4elements.river.artifacts.resources.Resources; +import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; -import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType; import org.dive4elements.river.model.River; /** @@ -65,83 +59,89 @@ // use_scenario (boolean) // ld_from_part; ld_to_part // scenario_selection (mögliche Werte:"scenarioType.option1" "scenarioType.option2" "scenarioType.option3" + final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, range); // FIXME: real calculation final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, range); - final Collection<ResultRow> rows = new ArrayList<>(); - SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die Abstraktion. ist erstmal nur ne idee - final ResultRow row1 = ResultRow.create(). // - putValue(GeneralResultType.station, 100).// - putValue(UInfoResultType.salixline, 28).// - putValue(UInfoResultType.salix_delta_mw, 2); - - if (!useScenario) { - - rows.add(row1); - result = new SalixLineCalculationNoScenarioResult("Ergebnis 1", null, rows); - } else { - - if (scenario.equals("scenarioType.option1")) { // REGIONAL - - final int[] scenarios = accessSalix.getRegionalScenarioIntegers(); - final List<SalixScenario> list = new ArrayList<>(); - for (final int scen_val : scenarios) { - list.add(new SalixScenario(scen_val, 666.));// TODO: replace 666 by real calculated value - } - row1.putValue(UInfoResultType.customMultiRowColSalixRegionalValue_Dwspl, list);// - rows.add(row1); - result = new SalixLineCalculationRegionalResult("Ergebnis 1 regional test", null, rows, scenarios); - - } else if (scenario.equals("scenarioType.option2")) { // SUPRA-REGIONAL - - final String supraRegional = accessSalix.getSupraRegionalString(); - final List<SalixZone> list = SalixZone.parse(supraRegional); - - final Map<DoubleRange, SalixScenario> rangeScenarioMap = new HashMap<>(); - // make double range - for (int i = 0; i < list.size(); i++) { - final SalixZone zone = list.get(i); - final double upper = i < list.size() - 1 ? (zone.getUpperFromTo() - 0.0001) : zone.getUpperFromTo() + 0.0001;// "halboffenes Intervall + final SalixLineCalculator calculator = new SalixLineCalculator(this.context, riverInfoProvider); + calculator.execute(problems, uinfo, results); - final DoubleRange zonerange = new DoubleRange((double) zone.getLowerFromTo(), upper); - final double salixValue = 666.;// TODO: calculate the salix value - final SalixScenario salixscen = new SalixScenario(zone.getDwsplValue(), salixValue); - - rangeScenarioMap.put(zonerange, salixscen); - } - - // make calculation - double currentKm = range.getMinimumDouble(); - final double step = 0.1; // TODO: get from global setting? - while (currentKm < range.getMaximumDouble()) { - final ResultRow rowSupraRegional = ResultRow.create(). // - putValue(GeneralResultType.station, currentKm).// - putValue(UInfoResultType.salixline, 28).// - putValue(UInfoResultType.salix_delta_mw, 2); - - final SalixScenario scenarioCurrentKm = findScenarioByKm(currentKm, rangeScenarioMap); - - if (scenarioCurrentKm != null) { // should not happen, scenarioCurrentKm == null -> BUG - rowSupraRegional.putValue(UInfoResultType.salix_line_scenario, scenarioCurrentKm.getSalixValue()); - rowSupraRegional.putValue(UInfoResultType.salix_line_scenario_dwspl, scenarioCurrentKm.getDwspl()); - } - rows.add(rowSupraRegional); - - currentKm = currentKm + step; - } - - result = new SalixLineCalculationSupraRegionalResult("Ergebnis 1 supra regional test", null, rows); - - } else if (scenario.equals("scenarioType.option3")) { // HISTORICAL - row1.putValue(UInfoResultType.salixlinehist, 66).// - putValue(UInfoResultType.salix_line_scenario_dwspl, 88); - rows.add(row1); - result = new SalixLineCalculationHistoricalResult("Ergebnis 1 historical test", null, rows); - } - } - results.addResult(result, problems); + // final Collection<ResultRow> rows = new ArrayList<>(); + // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die + // Abstraktion. ist erstmal nur ne idee + // final ResultRow row1 = ResultRow.create(). // + // putValue(GeneralResultType.station, 100).// + // putValue(UInfoResultType.salixline, 28).// + // putValue(UInfoResultType.salix_delta_mw, 2); + // + // if (!useScenario) { + // + // rows.add(row1); + // result = new SalixLineCalculationNoScenarioResult("Ergebnis 1", null, rows); + // } else { + // + // if (scenario.equals("scenarioType.option1")) { // REGIONAL + // + // final int[] scenarios = accessSalix.getRegionalScenarioIntegers(); + // final List<SalixScenario> list = new ArrayList<>(); + // for (final int scen_val : scenarios) { + // list.add(new SalixScenario(scen_val, 666.));// TODO: replace 666 by real calculated value + // } + // row1.putValue(UInfoResultType.customMultiRowColSalixRegionalValue_Dwspl, list);// + // rows.add(row1); + // result = new SalixLineCalculationRegionalResult("Ergebnis 1 regional test", null, rows, scenarios); + // + // } else if (scenario.equals("scenarioType.option2")) { // SUPRA-REGIONAL + // + // final String supraRegional = accessSalix.getSupraRegionalString(); + // final List<SalixZone> list = SalixZone.parse(supraRegional); + // + // final Map<DoubleRange, SalixScenario> rangeScenarioMap = new HashMap<>(); + // // make double range + // for (int i = 0; i < list.size(); i++) { + // final SalixZone zone = list.get(i); + // final double upper = i < list.size() - 1 ? (zone.getUpperFromTo() - 0.0001) : zone.getUpperFromTo() + 0.0001;// + // "halboffenes Intervall + // + // final DoubleRange zonerange = new DoubleRange((double) zone.getLowerFromTo(), upper); + // final double salixValue = 666.;// TODO: calculate the salix value + // final SalixScenario salixscen = new SalixScenario(zone.getDwsplValue(), salixValue); + // + // rangeScenarioMap.put(zonerange, salixscen); + // } + // + // // make calculation + // double currentKm = range.getMinimumDouble(); + // final double step = 0.1; // TODO: get from global setting? + // while (currentKm < range.getMaximumDouble()) { + // final ResultRow rowSupraRegional = ResultRow.create(). // + // putValue(GeneralResultType.station, currentKm).// + // putValue(UInfoResultType.salixline, 28).// + // putValue(UInfoResultType.salix_delta_mw, 2); + // + // final SalixScenario scenarioCurrentKm = findScenarioByKm(currentKm, rangeScenarioMap); + // + // if (scenarioCurrentKm != null) { // should not happen, scenarioCurrentKm == null -> BUG + // rowSupraRegional.putValue(UInfoResultType.salix_line_scenario, scenarioCurrentKm.getSalixValue()); + // rowSupraRegional.putValue(UInfoResultType.salix_line_scenario_dwspl, scenarioCurrentKm.getDwspl()); + // } + // rows.add(rowSupraRegional); + // + // currentKm = currentKm + step; + // } + // + // result = new SalixLineCalculationSupraRegionalResult("Ergebnis 1 supra regional test", null, rows); + // + // } else if (scenario.equals("scenarioType.option3")) { // HISTORICAL + // row1.putValue(UInfoResultType.salixlinehist, 66).// + // putValue(UInfoResultType.salix_line_scenario_dwspl, 88); + // rows.add(row1); + // result = new SalixLineCalculationHistoricalResult("Ergebnis 1 historical test", null, rows); + // } + // } + // results.addResult(result, problems); return new CalculationResult(results, problems); }