view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java @ 9178:2f5052835b76

uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
author gernotbelger
date Tue, 26 Jun 2018 19:48:35 +0200
parents c265c9fc915c
children dace17e26d33
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;

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

import org.apache.log4j.Logger;
import org.dive4elements.artifacts.Artifact;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.artifacts.CallMeta;
import org.dive4elements.artifacts.common.utils.XMLUtils;
import org.dive4elements.river.artifacts.resources.Resources;
import org.dive4elements.river.artifacts.states.DefaultState;
import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernPropertiesHelper;
import org.w3c.dom.Element;

/**
 * @author Gernot Belger
 */
public class CalculationSelectUinfo extends DefaultState {

    private static final long serialVersionUID = 1L;

    /** The log that is used in this class. */
    private static Logger log = Logger.getLogger(CalculationSelectUinfo.class);

    @Override
    protected Element[] createItems(final XMLUtils.ElementCreator cr, final Artifact artifact, final String name, final CallContext context) {
        final CallMeta meta = context.getMeta();

        final Collection<Element> calcs = new ArrayList<>(UinfoCalcMode.values().length);

        for (final UinfoCalcMode calcMode : UinfoCalcMode.values()) {
            final String calc = calcMode.name();

            final String label = Resources.getMsg(meta, calc, calc);

            final Element element = createItem(cr, new String[] { label, calc });
            calcs.add(element);
        }

        return calcs.toArray(new Element[calcs.size()]);
    }

    @Override
    public boolean validate(final Artifact artifact) throws IllegalArgumentException {
        log.debug("CalculationSelect.validate");

        final UINFOArtifact uinfo = (UINFOArtifact) artifact;
        final String calcDebug = uinfo.getCalculationMode().toString();
        if (calcDebug.equals("uinfo_inundation_duration")) {

            final String river = uinfo.getRiver();
            if (!UedauernPropertiesHelper.fileExistsForRiver(river)) {
                throw new IllegalArgumentException("error_river_inundationdur_file_not_found");
            }
        }

        /* throws an exception if calculation mode is invalid */

        return true;
    }
}

http://dive4elements.wald.intevation.org