gernotbelger@9276: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9276: * Software engineering by Intevation GmbH gernotbelger@9276: * gernotbelger@9276: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9276: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9276: * documentation coming with Dive4Elements River for details. gernotbelger@9276: */ gernotbelger@9276: package org.dive4elements.river.artifacts.bundu.bezugswst; gernotbelger@9276: gernotbelger@9276: import org.apache.log4j.Logger; gernotbelger@9276: import org.dive4elements.artifacts.Artifact; gernotbelger@9277: import org.dive4elements.artifacts.CallContext; gernotbelger@9277: import org.dive4elements.artifacts.common.utils.XMLUtils; gernotbelger@9276: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9276: import org.dive4elements.river.artifacts.model.RangeWithValues; gernotbelger@9276: import org.dive4elements.river.artifacts.states.WQAdapted; gernotbelger@9277: import org.w3c.dom.Element; gernotbelger@9276: gernotbelger@9276: /** gernotbelger@9276: * State to input W/Q data for fixings gernotbelger@9277: * gernotbelger@9276: * @author Andre Heinecke gernotbelger@9276: */ gernotbelger@9276: public class BunduWstWQFixing extends WQAdapted { gernotbelger@9276: gernotbelger@9276: /** The log used in this state. */ gernotbelger@9276: private static Logger log = Logger.getLogger(BunduWstWQFixing.class); gernotbelger@9276: gernotbelger@9277: @Override gernotbelger@9277: protected String getUIProvider() { gernotbelger@9277: return "bundu_wst_wq_panel"; gernotbelger@9277: } gernotbelger@9277: gernotbelger@9276: /** Simple sanity check if values are positive numbers **/ gernotbelger@9276: @Override gernotbelger@9276: public boolean validate(final Artifact artifact) throws IllegalArgumentException { gernotbelger@9276: log.debug("BunduWstWQFixing.validate"); gernotbelger@9276: gernotbelger@9276: final RangeWithValues[] rwvs = extractInput(getData((D4EArtifact) artifact, "wq_values")); gernotbelger@9276: gernotbelger@9276: if (rwvs == null) { gernotbelger@9276: throw new IllegalArgumentException("error_missing_wq_data"); gernotbelger@9276: } gernotbelger@9276: gernotbelger@9276: for (final RangeWithValues rwv : rwvs) { gernotbelger@9276: final double[] values = rwv.getValues(); gernotbelger@9276: for (final double val : values) { gernotbelger@9276: if (val <= 0) { gernotbelger@9276: throw new IllegalArgumentException("error_validate_positive"); gernotbelger@9276: } gernotbelger@9276: } gernotbelger@9276: } gernotbelger@9276: gernotbelger@9276: return true; gernotbelger@9276: } gernotbelger@9276: gernotbelger@9277: // adding bezugsjahr and dauer to client gernotbelger@9277: gernotbelger@9276: @Override gernotbelger@9277: protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) { gernotbelger@9277: gernotbelger@9277: final Element[] defaultElements = super.createItems(ec, artifact, name, context); gernotbelger@9277: gernotbelger@9277: final BunduAccess access = new BunduAccess((D4EArtifact) artifact); gernotbelger@9277: gernotbelger@9277: final int bezugsjahr = access.getBezugsJahr(); gernotbelger@9277: final int qSeriesLength = access.getQSeriesLength(); gernotbelger@9277: final String[] keys = new String[] { "ignore_q_series_length", "ignore_bezugsjahr" }; gernotbelger@9277: final String[] values = new String[] { String.valueOf(qSeriesLength), String.valueOf(bezugsjahr) }; gernotbelger@9277: gernotbelger@9277: return FixationChoice.appendElements(ec, defaultElements, keys, values); gernotbelger@9277: gernotbelger@9276: } gernotbelger@9277: gernotbelger@9276: }