view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java @ 9661:9b8ba3b83a15

Importer (s/u-info) vegetation zones: new database column in vegetation_type table for german type name, localized vegetation type names by querying the database instead of translating by resource property, detecting and cancelling the import of a second vegetation zone file for a river, detecting, logging, cancelling in case of wrong column titles, detecting, logging and ignoring lines with missing (color) values, comparing vegetation zone name and class with the database and logging+ignoring in case of inconsistencies, starting the most elevated zone with 0 instead of -1 overflow days
author mschaefer
date Mon, 23 Mar 2020 16:38:12 +0100
parents 63bbd5e45839
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;

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.UedauernConfiguration;
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");
        /* throws an exception if calculation mode is invalid */

        final UINFOArtifact uinfo = (UINFOArtifact) artifact;
        final String calcmode = uinfo.getCalculationMode().toString(); // "toString()" is important
        if (calcmode.equals("uinfo_inundation_duration")) {

            final String river = uinfo.getRiver();
            if (!UedauernConfiguration.filesExistsForRiver(river))
                throw new IllegalArgumentException("error_no_data_for_river"); // wrong config could be thrown here as well...
        }
        return true;
    }
}

http://dive4elements.wald.intevation.org