Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java @ 9559:ba0561906f81
Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author | gernotbelger |
---|---|
date | Wed, 24 Oct 2018 18:40:38 +0200 |
parents | 709a73badd48 |
children |
line wrap: on
line source
/** 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 * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.uinfo.inundationduration; import java.io.IOException; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.CalculationResult; import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer; import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.YearType; /** * @author Domenico Nardi Tironi * */ final class InundationDurationCalculation { private final CallContext context; public InundationDurationCalculation(final CallContext context) { this.context = context; } public CalculationResult calculate(final UINFOArtifact uinfo) { final Calculation problems = new Calculation(); try { final InundationDurationAccess indurax = new InundationDurationAccess(uinfo); // VegetationZones have been removed - these two lines should be deleted // final String zonesRaw = indurax.getVegZones(); // final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw); // FIXME: instead find out a-uuid of referenced vegetations // FIXME: // final String vegZoneId = "unknown"; final boolean isUseScenario = indurax.getIsUseScenario(); final InundationDurationCalculationResult result = new InundationDurationCalculationResult(); final String selectedItem = indurax.getSelectedLabel(); final YearType type = indurax.isUseYear() ? YearType.jahre : YearType.mittel; final UedauernConfiguration config = UedauernConfiguration.getInstance(indurax.getRiverName(), type); addLayer(indurax, "uinfo.export.url.inundationduration.inundationduration", selectedItem, config.getDefaultWmsConfig(selectedItem), result, true); addLayer(indurax, "uinfo.export.url.inundationduration.vegetation", selectedItem, config.getVegWmsConfig(selectedItem), result, false); if (isUseScenario) { final UedauernConfiguration configSzenario = UedauernConfiguration.getInstance(indurax.getRiverName(), YearType.szenario); final String selectedScenario = indurax.getSelectedSzenario(); addLayer(indurax, "uinfo.export.url.inundationduration.scenario", selectedScenario, configSzenario.getDefaultWmsConfig(selectedScenario), result, true); addLayer(indurax, "uinfo.export.url.inundationduration.vegetation_scenario", selectedScenario, configSzenario.getVegWmsConfig(selectedScenario), result, false); // // TODO: add vegetationzone-values as styles to layer // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(), // "uinfo.export.url.inundationduration.vegetation_scenario"); // result.addLayer(scenarioVegetationLayer); } return new CalculationResult(result, problems); } catch (IOException | TsvReaderException e) { e.printStackTrace(); problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage()); return new CalculationResult(null, problems); } } private void addLayer(final InundationDurationAccess indurax, final String label, final String selectedItem, final UedauernConfiguration.WmsConfig config, final InundationDurationCalculationResult result, final boolean show) throws IOException, TsvReaderException { if (config != null) { final WmsLayer layer = indurax.createWMSLayer(this.context, label, selectedItem, config, show); if (layer != null) result.addLayer(layer); } } }