view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java @ 9222:5a0e8d76582e

uinfo.salix regional workflow
author gernotbelger
date Wed, 04 Jul 2018 13:06:28 +0200
parents 611a523fc42f
children da0bdbcd6f09
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.salix;

import java.util.ArrayList;
import java.util.Collection;

import org.apache.commons.lang.math.DoubleRange;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.common.GeneralResultType;
import org.dive4elements.river.artifacts.common.ResultRow;
import org.dive4elements.river.artifacts.model.Calculation;
import org.dive4elements.river.artifacts.model.CalculationResult;
import org.dive4elements.river.artifacts.resources.Resources;
import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils;
import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
import org.dive4elements.river.artifacts.uinfo.commons.UInfoResultType;
import org.dive4elements.river.model.River;

/**
 * @author Domenico Nardi Tironi
 *
 */
final class SalixLineCalculation {

    private final CallContext context;

    public SalixLineCalculation(final CallContext context) {
        this.context = context;
    }

    public CalculationResult calculate(final UINFOArtifact uinfo) {
        final Calculation problems = new Calculation();

        final String calcModeLabel = Resources.getMsg(this.context.getMeta(), uinfo.getCalculationMode().name());
        final String user = CalculationUtils.findArtifactUser(this.context, uinfo);

        final SalixLineAccess accessSalix = new SalixLineAccess(uinfo);

        final River river = accessSalix.getRiver();
        final RiverInfo riverInfo = new RiverInfo(river);

        final DoubleRange range = accessSalix.getRange();
        final boolean useScenario = accessSalix.getUseScenario();
        final String selectedScenario = accessSalix.getScenario();
        final Double fromPart = accessSalix.getFromPart();
        final Double toPart = accessSalix.getToPart();
        // calculation_mode
        // ld_from , ld_to
        // use_scenario (boolean)
        // ld_from_part; ld_to_part
        // scenario_selection (mögliche Werte:"scenarioType.option1" "scenarioType.option2" "scenarioType.option3"

        // FIXME: real calculation

        final SalixLineCalculationResults results = new SalixLineCalculationResults(calcModeLabel, user, riverInfo, range);

        final Collection<ResultRow> rows = new ArrayList<>();

        final ResultRow row1 = ResultRow.create(). //
                putValue(GeneralResultType.station, 100).//
                putValue(UInfoResultType.salixline, 28).//
                putValue(UInfoResultType.salixlinehist, 2).//
                putValue(UInfoResultType.salixlinescen, 82);
        rows.add(row1);

        final ResultRow row2 = ResultRow.create(). //
                putValue(GeneralResultType.station, 200). //
                putValue(UInfoResultType.salixline, 3). //
                putValue(UInfoResultType.salixlinehist, 2).//
                putValue(UInfoResultType.salixlinescen, 822);

        rows.add(row2);

        final SalixLineCalculationResult result = new SalixLineCalculationResult("Ergebnis 1", null, rows);

        results.addResult(result, problems);

        return new CalculationResult(results, problems);
    }
}

http://dive4elements.wald.intevation.org