gernotbelger@8996: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9069: * Software engineering by gernotbelger@9069: * Björnsen Beratende Ingenieure GmbH gernotbelger@8996: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8996: * gernotbelger@8996: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8996: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8996: * documentation coming with Dive4Elements River for details. gernotbelger@8996: */ gernotbelger@8996: package org.dive4elements.river.artifacts.uinfo.inundationduration; gernotbelger@8996: gernotbelger@9070: import java.util.List; gernotbelger@8996: gernotbelger@8996: import org.dive4elements.artifacts.CallContext; gernotbelger@8996: import org.dive4elements.river.artifacts.model.Calculation; gernotbelger@8996: import org.dive4elements.river.artifacts.model.CalculationResult; gernotbelger@8996: import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; gernotbelger@9481: import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer; gernotbelger@9404: import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZoneServerClientXChange; gernotbelger@8996: gernotbelger@8996: /** gernotbelger@8996: * @author Domenico Nardi Tironi gernotbelger@8996: * gernotbelger@8996: */ gernotbelger@8996: final class InundationDurationCalculation { gernotbelger@8996: gernotbelger@9069: private final CallContext context; gernotbelger@8996: gernotbelger@9069: public InundationDurationCalculation(final CallContext context) { gernotbelger@8996: this.context = context; gernotbelger@8996: } gernotbelger@8996: gernotbelger@9069: public CalculationResult calculate(final UINFOArtifact uinfo) { gernotbelger@8996: final Calculation problems = new Calculation(); gernotbelger@8996: gernotbelger@9481: final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); gernotbelger@9069: gernotbelger@9070: final String zonesRaw = indurax.getVegZones(); gernotbelger@9404: final List zones = VegetationZoneServerClientXChange.parse(zonesRaw); gernotbelger@9481: gernotbelger@9481: final boolean isUseScenario = indurax.getIsUseScenario(); gernotbelger@9481: gernotbelger@9481: final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); gernotbelger@9481: gernotbelger@9481: final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.inundationduration"); gernotbelger@9481: result.addLayer(inundationDurationLayer); gernotbelger@8996: gernotbelger@9190: // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url gernotbelger@9481: final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation"); gernotbelger@9481: result.addLayer(vegetationLayer); gernotbelger@9069: gernotbelger@9190: if (isUseScenario) { gernotbelger@9481: // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel" gernotbelger@9481: // und "jahre" funktioniert) gernotbelger@9481: // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), gernotbelger@9481: // "uinfo.export.url.inundationduration.scenario"); gernotbelger@9481: // result.addLayer(scenarioInundationDurationLayer); gernotbelger@9481: // gernotbelger@9481: // // TODO: add vegetationzone-values as styles to layer gernotbelger@9481: // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), gernotbelger@9481: // "uinfo.export.url.inundationduration.vegetation_scenario"); gernotbelger@9481: // result.addLayer(scenarioVegetationLayer); gernotbelger@9190: } gernotbelger@9069: gernotbelger@9190: return new CalculationResult(result, problems); gernotbelger@8996: } gernotbelger@8996: }