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@9277: import org.dive4elements.river.client.shared.model.Data;
gernotbelger@9278: import org.dive4elements.river.client.shared.model.DataItem;
gernotbelger@9277: import org.dive4elements.river.client.shared.model.DataList;
gernotbelger@9276:
gernotbelger@9276: import com.google.gwt.i18n.client.NumberFormat;
gernotbelger@9277: import com.smartgwt.client.widgets.Canvas;
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@9278: private int bezugsjahr = 0;
gernotbelger@9278: private int qSeriesLength = 0;
gernotbelger@9278:
gernotbelger@9277: /** get bezugsjahr + range from server HERE **/
gernotbelger@9277: @Override
gernotbelger@9277: public Canvas create(final DataList data) {
gernotbelger@9277:
gernotbelger@9278: for (final Data container : data.getAll()) {
gernotbelger@9278:
gernotbelger@9278: for (final DataItem item : container.getItems()) {
gernotbelger@9278: if ("ignore_bezugsjahr".equals(item.getLabel())) {
gernotbelger@9278: this.bezugsjahr = Integer.valueOf(item.getStringValue());
gernotbelger@9278: } else if ("ignore_q_series_length".equals(item.getLabel())) {
gernotbelger@9278: this.qSeriesLength = Integer.valueOf(item.getStringValue());
gernotbelger@9278: }
gernotbelger@9278: }
gernotbelger@9278: }
gernotbelger@9277: return super.create(data);
gernotbelger@9277: }
gernotbelger@9277:
gernotbelger@9277: // TODO: ValidateRange verstehen und dann ggf. Löschen/Ändern/was auch immer
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 :