Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculation.java @ 9176:1614cb14308f
Work on calculations for S-Info flood duration workflow
author | mschaefer |
---|---|
date | Mon, 25 Jun 2018 19:21:11 +0200 |
parents | 23945061daec |
children | a4121ec450d6 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculation.java Mon Jun 25 17:58:11 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculation.java Mon Jun 25 19:21:11 2018 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt @@ -11,19 +11,25 @@ import org.apache.commons.lang.math.DoubleRange; import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.artifacts.WINFOArtifact; 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.SINFOArtifact; import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider; +import org.dive4elements.river.artifacts.sinfo.flood_duration.RiversideRadioChoice.RiversideChoiceKey; import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper; import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; -import org.dive4elements.river.artifacts.sinfo.util.WstInfo; +import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; import org.dive4elements.river.model.River; +import org.dive4elements.river.model.sinfo.Infrastructure; -class FloodDurationCalculation { - - // private static Logger log = Logger.getLogger(FloodDurationCalculation.class); +/** + * Calculation of the flood durations of the infrastructures of the km range of a river + * + * @author Matthias Schäfer + */ +final class FloodDurationCalculation { private final CallContext context; @@ -38,44 +44,39 @@ /* access input data */ final FloodDurationAccess access = new FloodDurationAccess(sinfo); final River river = access.getRiver(); - + final RiverInfo riverInfo = new RiverInfo(river); final DoubleRange calcRange = access.getRange(); - /* calculate results for each diff pair */ - final Calculation problems = new Calculation(); - final RiverInfoProvider infoProvider = RiverInfoProvider.forRange(this.context, river, calcRange); - final String calcModeLabel = Resources.getMsg(this.context.getMeta(), sinfo.getCalculationMode().name()); + final String riverside = Resources.getMsg(this.context.getMeta(), access.getRiverside()); + final Infrastructure infrasSeries = Infrastructure.getSeries(river); + final String infrasType = (infrasSeries != null) ? infrasSeries.getType().getName() : "?"; - // TODO: use enum for riverside - final String riverside = access.getRiverside(); - // more - // TODO: mis- ups.. re-use WINFO Artifact as in TkhState - final WinfoArtifactWrapper winfo = new WinfoArtifactWrapper(sinfo); - // winfo.computeWaterlevelData(); - final FloodDurationCalculationResults results = calculateResult(calcModeLabel, riverside, calcRange, infoProvider, user, problems); + final Calculation problems = new Calculation(); + + final FloodDurationCalculationResults results = new FloodDurationCalculationResults(calcModeLabel, user, riverInfo, calcRange); + + final FloodDurationCalculationResult result = calculateResult(calcModeLabel, infrasType, riverside, calcRange, infoProvider, + RiversideChoiceKey.fromKey(access.getRiverside()), user, problems); + results.addResult(result, problems); + + // Calculate the selected main values, if any + /* misuse winfo-artifact to calculate waterlevels in the same way */ + final WINFOArtifact winfo = new WinfoArtifactWrapper(sinfo); return new CalculationResult(results, problems); } /** - * Calculates FAKE Flood Duration - * - * @param riverside - * @param calcModeLabel - * @param user - * - * @param infoProvider + * Calculates the flood durations of the infrastructures of a km range of a river */ - private FloodDurationCalculationResults calculateResult(final String calcModeLabel, final String riverside, final DoubleRange calcRange, - final RiverInfoProvider riverInfoProvider, final String user, final Calculation problems) { + private FloodDurationCalculationResult calculateResult(final String calcModeLabel, final String infrastructureType, final String riverside, + final DoubleRange calcRange, final RiverInfoProvider riverInfoProvider, final RiversideChoiceKey riversideKey, final String user, + final Calculation problems) { final FloodDurationCalculator calculator = new FloodDurationCalculator(this.context, riverInfoProvider); - final String wspLabel = "WSP-Name";// wstKms.getName(); - final int wspYear = 9999; // waterlevel.getYear(); - final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, riverInfoProvider.getReferenceGauge()); - final String label = String.format("%s - %s", wspLabel, " soundingLabel"); - return calculator.execute(problems, label, wstInfo, calcModeLabel, calcRange, riverside, user); + final String label = infrastructureType + ", " + riverside; + return calculator.execute(problems, label, calcModeLabel, calcRange, riversideKey, user).getResult(); } } \ No newline at end of file