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:
gernotbelger@9276: package org.dive4elements.river.client.client.ui.bundu;
gernotbelger@9276:
gernotbelger@9276: import java.util.ArrayList;
gernotbelger@9276: import java.util.List;
gernotbelger@9276: import java.util.Map;
gernotbelger@9276:
gernotbelger@9276: import org.dive4elements.river.client.client.ui.DoubleArrayPanel;
gernotbelger@9276: import org.dive4elements.river.client.client.ui.WQAdaptedInputPanel;
gernotbelger@9276:
gernotbelger@9276: import com.google.gwt.i18n.client.NumberFormat;
gernotbelger@9276:
gernotbelger@9276: /**
gernotbelger@9276: * This UIProvider creates a widget to enter W or Q data for
gernotbelger@9276: * Fixation analysis
gernotbelger@9276: *
gernotbelger@9276: * @author Andre Heinecke
gernotbelger@9276: */
gernotbelger@9276: public class BunduWstWQPanel extends WQAdaptedInputPanel {
gernotbelger@9276: private static final long serialVersionUID = -3218827566805476423L;
gernotbelger@9276:
gernotbelger@9276: @Override
gernotbelger@9276: protected List validateRange(final Map ranges) {
gernotbelger@9276: final List errors = new ArrayList();
gernotbelger@9276: final NumberFormat nf = NumberFormat.getDecimalFormat();
gernotbelger@9276:
gernotbelger@9276: for (final DoubleArrayPanel dap : this.wqranges.values()) {
gernotbelger@9276:
gernotbelger@9276: if (!dap.validateForm()) {
gernotbelger@9276: errors.add(this.MSG.error_invalid_double_value());
gernotbelger@9276: return errors;
gernotbelger@9276: }
gernotbelger@9276:
gernotbelger@9276: int idx = 0;
gernotbelger@9276:
gernotbelger@9276: final double[] values = dap.getInputValues();
gernotbelger@9276:
gernotbelger@9276: final double[] good = new double[values.length];
gernotbelger@9276:
gernotbelger@9276: for (final double value : values) {
gernotbelger@9276: if (value <= 0) {
gernotbelger@9276: String tmp = this.MSG.error_validate_positive();
gernotbelger@9276: tmp = tmp.replace("$1", nf.format(value));
gernotbelger@9276: errors.add(tmp);
gernotbelger@9276: } else {
gernotbelger@9276: good[idx++] = value;
gernotbelger@9276: }
gernotbelger@9276: }
gernotbelger@9276:
gernotbelger@9276: final double[] justGood = new double[idx];
gernotbelger@9276: for (int i = 0; i < justGood.length; i++) {
gernotbelger@9276: justGood[i] = good[i];
gernotbelger@9276: }
gernotbelger@9276:
gernotbelger@9276: if (!errors.isEmpty()) {
gernotbelger@9276: dap.setValues(justGood);
gernotbelger@9276: }
gernotbelger@9276: }
gernotbelger@9276: return errors;
gernotbelger@9276: }
gernotbelger@9276: }
gernotbelger@9276: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :