gernotbelger@8854: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8914: * Software engineering by gernotbelger@8914: * Björnsen Beratende Ingenieure GmbH gernotbelger@8860: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8854: * gernotbelger@8854: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8854: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8854: * documentation coming with Dive4Elements River for details. gernotbelger@8854: */ gernotbelger@8854: package org.dive4elements.river.artifacts.sinfo; gernotbelger@8854: gernotbelger@8854: import java.util.ArrayList; gernotbelger@8854: import java.util.Collection; gernotbelger@8854: gernotbelger@8854: import org.apache.log4j.Logger; gernotbelger@8854: import org.dive4elements.artifacts.Artifact; gernotbelger@8854: import org.dive4elements.artifacts.CallContext; gernotbelger@8854: import org.dive4elements.artifacts.CallMeta; gernotbelger@8854: import org.dive4elements.artifacts.common.utils.XMLUtils; gernotbelger@8854: import org.dive4elements.river.artifacts.resources.Resources; gernotbelger@8854: import org.dive4elements.river.artifacts.states.DefaultState; gernotbelger@8854: import org.w3c.dom.Element; gernotbelger@8854: gernotbelger@8854: /** gernotbelger@8854: * @author Gernot Belger gernotbelger@8854: */ gernotbelger@8854: public class CalculationSelectSinfo extends DefaultState { gernotbelger@8854: gernotbelger@8914: private static final long serialVersionUID = 1L; gernotbelger@8854: gernotbelger@8914: /** The log that is used in this class. */ gernotbelger@8854: private static Logger log = Logger.getLogger(CalculationSelectSinfo.class); gernotbelger@8854: gernotbelger@8854: @Override gernotbelger@8914: protected Element[] createItems(final XMLUtils.ElementCreator cr, final Artifact artifact, final String name, final CallContext context) { gernotbelger@8914: final CallMeta meta = context.getMeta(); gernotbelger@8914: gernotbelger@8854: final Collection calcs = new ArrayList<>(SinfoCalcMode.values().length); gernotbelger@8854: gernotbelger@8854: for (final SinfoCalcMode calcMode : SinfoCalcMode.values()) { gernotbelger@8914: final String calc = calcMode.name(); gernotbelger@8914: gernotbelger@8914: final String label = Resources.getMsg(meta, calc, calc); gernotbelger@8914: gernotbelger@8914: final Element element = createItem(cr, new String[] { label, calc }); gernotbelger@8914: calcs.add(element); gernotbelger@8914: } gernotbelger@8914: gernotbelger@8854: return calcs.toArray(new Element[calcs.size()]); gernotbelger@8854: } gernotbelger@8854: gernotbelger@8854: @Override gernotbelger@8914: public boolean validate(final Artifact artifact) throws IllegalArgumentException { gernotbelger@8854: log.debug("CalculationSelect.validate"); gernotbelger@8854: gernotbelger@8854: final SINFOArtifact sinfo = (SINFOArtifact) artifact; gernotbelger@8854: /* throws an exception if calculation mode is invalid */ gernotbelger@8854: sinfo.getCalculationMode(); gernotbelger@8854: return true; gernotbelger@8854: } gernotbelger@8914: }