view artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/CalculationSelectSinfo.java @ 8980:b194fa64506a

SINFO - show results themes according to spec, either raw data or floating mean values. Some improvements to error handling and handling of empty results.
author gernotbelger
date Thu, 05 Apr 2018 18:30:34 +0200
parents e3519c3e7a0a
children f692f5a0536a
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.sinfo;

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.w3c.dom.Element;

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

    private static final long serialVersionUID = 1L;

    /** The log that is used in this class. */
    private static Logger log = Logger.getLogger(CalculationSelectSinfo.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<>(SinfoCalcMode.values().length);

        for (final SinfoCalcMode calcMode : SinfoCalcMode.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 SINFOArtifact sinfo = (SINFOArtifact) artifact;
        /* throws an exception if calculation mode is invalid */
        sinfo.getCalculationMode();
        return true;
    }
}

http://dive4elements.wald.intevation.org