view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java @ 9558:709a73badd48

VegetationZone removed from Uinfo-Ü'Dauern Workflow
author gernotbelger
date Wed, 24 Oct 2018 12:00:49 +0200
parents bf6b63208f34
children ba0561906f81
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.InundationDurationAccess.WmsClassification;
import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;

/**
 * @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 WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.inundationduration",
                    WmsClassification.asIs, vegZoneId);
            result.addLayer(inundationDurationLayer);

            final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.vegetation",
                    WmsClassification.vegetationZone, vegZoneId);
            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);
        }
        catch (IOException | TsvReaderException e) {
            e.printStackTrace();
            problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage());
            return new CalculationResult(null, problems);
        }
    }
}

http://dive4elements.wald.intevation.org