view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java @ 9481:787fc085459b

TSV introduced; uinfo.inundationWMS-Config
author gernotbelger
date Wed, 12 Sep 2018 10:55:09 +0200
parents bc9a45d2b1fa
children bf6b63208f34
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.util.List;

import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.model.Calculation;
import org.dive4elements.river.artifacts.model.CalculationResult;
import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;
import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZoneServerClientXChange;

/**
 * @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();

        final InundationDurationAccess indurax = new InundationDurationAccess(uinfo);

        final String zonesRaw = indurax.getVegZones();
        final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw);

        final boolean isUseScenario = indurax.getIsUseScenario();

        final InundationDurationCalculationResult result = new InundationDurationCalculationResult();

        final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.inundationduration");
        result.addLayer(inundationDurationLayer);

        // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url
        final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation");
        result.addLayer(vegetationLayer);

        if (isUseScenario) {
            // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel"
            // und "jahre" funktioniert)
            // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
            // "uinfo.export.url.inundationduration.scenario");
            // result.addLayer(scenarioInundationDurationLayer);
            //
            // // 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);
    }
}

http://dive4elements.wald.intevation.org