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@9537: import java.io.IOException; 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@9537: import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException; gernotbelger@8996: import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; gernotbelger@9537: import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationAccess.WmsClassification; gernotbelger@9481: import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer; 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@9537: try { gernotbelger@9537: final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); gernotbelger@8996: gernotbelger@9558: // VegetationZones have been removed - these two lines should be deleted gernotbelger@9558: // final String zonesRaw = indurax.getVegZones(); gernotbelger@9558: // final List zones = VegetationZoneServerClientXChange.parse(zonesRaw); gernotbelger@9537: // FIXME: instead find out a-uuid of referenced vegetations gernotbelger@9537: // FIXME: gernotbelger@9537: final String vegZoneId = "unknown"; gernotbelger@9069: gernotbelger@9537: final boolean isUseScenario = indurax.getIsUseScenario(); gernotbelger@9537: gernotbelger@9537: final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); gernotbelger@9537: gernotbelger@9537: final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.inundationduration", gernotbelger@9537: WmsClassification.asIs, vegZoneId); gernotbelger@9537: result.addLayer(inundationDurationLayer); gernotbelger@9537: gernotbelger@9537: final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.vegetation", gernotbelger@9537: WmsClassification.vegetationZone, vegZoneId); gernotbelger@9537: result.addLayer(vegetationLayer); gernotbelger@9537: gernotbelger@9537: if (isUseScenario) { gernotbelger@9537: // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel" gernotbelger@9537: // und "jahre" funktioniert) gernotbelger@9537: // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), gernotbelger@9537: // "uinfo.export.url.inundationduration.scenario"); gernotbelger@9537: // result.addLayer(scenarioInundationDurationLayer); gernotbelger@9537: // gernotbelger@9537: // // TODO: add vegetationzone-values as styles to layer gernotbelger@9537: // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), gernotbelger@9537: // "uinfo.export.url.inundationduration.vegetation_scenario"); gernotbelger@9537: // result.addLayer(scenarioVegetationLayer); gernotbelger@9537: } gernotbelger@9537: gernotbelger@9537: return new CalculationResult(result, problems); gernotbelger@9190: } gernotbelger@9537: catch (IOException | TsvReaderException e) { gernotbelger@9537: e.printStackTrace(); gernotbelger@9537: problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage()); gernotbelger@9537: return new CalculationResult(null, problems); gernotbelger@9537: } gernotbelger@8996: } gernotbelger@8996: }