diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java @ 9222:5a0e8d76582e

uinfo.salix regional workflow
author gernotbelger
date Wed, 04 Jul 2018 13:06:28 +0200
parents aafae1ab25f0
children c3994657c15d
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java	Wed Jul 04 12:00:57 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java	Wed Jul 04 13:06:28 2018 +0200
@@ -19,6 +19,7 @@
 import org.dive4elements.river.client.shared.model.DefaultData;
 import org.dive4elements.river.client.shared.model.DefaultDataItem;
 
+import com.smartgwt.client.util.SC;
 import com.smartgwt.client.widgets.Canvas;
 import com.smartgwt.client.widgets.Label;
 import com.smartgwt.client.widgets.form.fields.TextItem;
@@ -33,10 +34,11 @@
 
     private static final long serialVersionUID = 1L;
 
-    protected enum Type {
-        single, multi // "SingleItem" (Klassenname) meint, dass es nur ein einziges Eingabefeld gibt (nicht from-to; epoch)
+    public enum Type {
+        single, multi, limit5 // "SingleItem" (Klassenname) meint, dass es nur ein einziges Eingabefeld gibt (nicht from-to; epoch)
         // Type multi: append (year): es können mehrere Werte eingegeben werden; Leerzeichen-getrennt
         // Type single: append (year, sohlhöhendifferenz): nur ein Wert ist zulässig
+        // Type limit5 TODO: generalize, if needed
     }
 
     private final Type type;
@@ -140,14 +142,7 @@
         final List<String> errors = new ArrayList<String>();
         // String filtered = "";
         // int goodValues = 0;
-
-        try {
-            Integer.parseInt(sValue);
-        }
-        catch (final NumberFormatException e) {
-            errors.add(this.MSG.wrongFormat() + ": " + sValue);
-
-        }
+        errors.addAll(validateNumber(sValue));
         boolean isGood = false;
         for (final String validYear : this.validInputs) {
             /* No list contains for strings? */
@@ -171,6 +166,19 @@
         return errors;
     }
 
+    private final List<String> validateNumber(final String sValue) {
+        final List<String> errors = new ArrayList<String>();
+
+        try {
+            Integer.parseInt(sValue);
+        }
+        catch (final NumberFormatException e) {
+            errors.add(this.MSG.wrongFormat() + ": " + sValue);
+
+        }
+        return errors;
+    }
+
     protected abstract String errorForItemMsg();
 
     protected final void appendValue(final String value) {
@@ -186,6 +194,24 @@
 
             break;
 
+        case limit5:
+            // APPEND = ADD to existing -> MULTI YEAR
+            final String oldValues = this.inputItem.getValueAsString();
+            if (oldValues != null && !oldValues.isEmpty()) {
+                final String[] oldVals = oldValues.split(" ");
+                if (oldVals.length < 5)// TODO: generalize, if needed
+                    this.inputItem.setValue(oldValues.trim() + " " + value);
+                else {
+                    // msg TODO: generalize, if needed
+                    SC.warn(this.MSG.error_limit_exceeded_salix());
+                }
+            }
+
+            else
+                this.inputItem.setValue(value);
+
+            break;
+
         case single:
             this.inputItem.setValue(value);
             break;
@@ -205,12 +231,22 @@
 
         switch (this.type) {
         case multi:
+
             final String[] sValues = sValue.trim().split(" ");
             for (final String value : sValues) {
                 errors.addAll(this.validateSingleInput(value));
             }
             break;
-
+        case limit5:
+            final String[] values = sValue.trim().split(" ");
+            if (values.length > 5) {
+                errors.add(this.MSG.error_limit_exceeded_salix());// TODO generalize if needed
+            }
+            for (int i = 0; i < values.length; i++) {
+                if (i < 5)
+                    errors.addAll(this.validateNumber(values[i]));
+            }
+            break;
         case single:
             errors.addAll(this.validateSingleInput(sValue));
             break;

http://dive4elements.wald.intevation.org