diff flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java @ 4132:f6c73ee1b7f1

#543 Validate date range in client gauge time range selection state.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 15 Oct 2012 09:29:25 +0200
parents 0cc2c3d89a9d
children c722c08cf502
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java	Fri Oct 12 09:27:18 2012 +0200
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/GaugeTimeRangePanel.java	Mon Oct 15 09:29:25 2012 +0200
@@ -43,6 +43,10 @@
 
     protected DateRangeItem dateRange;
 
+    protected Long maxUpper;
+    protected Long maxLower;
+
+
     public GaugeTimeRangePanel() {
         GWT.log("Creating YearInputPanel");
         yearTable = new ListGrid();
@@ -50,6 +54,25 @@
         yearTable.setShowHeaderContextMenu(false);
     }
 
+    protected void setMaxUpper(DataList dataList) {
+        LongRangeData range = (LongRangeData) dataList.get(0);
+        setMaxUpper((Long) range.getUpper());
+    }
+
+    protected void setMaxUpper(Long maxUpper) {
+        this.maxUpper = maxUpper;
+    }
+
+    protected void setMaxLower(DataList dataList) {
+        LongRangeData range = (LongRangeData) dataList.get(0);
+        setMaxLower((Long) range.getLower());
+    }
+
+    protected void setMaxLower(Long maxLower) {
+        this.maxLower = maxLower;
+    }
+
+
     public Canvas create(DataList data) {
         setDataName(data);
 
@@ -71,6 +94,10 @@
         yearTable.setDataSource(new DischargeInfoDataSource(url, gauge));
 
         helperContainer.addMember(yearTable);
+
+        setMaxUpper(data);
+        setMaxLower(data);
+
         return root;
     }
 
@@ -90,7 +117,7 @@
         GWT.log("create old date.");
         Data       data  = dataList.get(0);
         DataItem[] items = data.getItems();
-GWT.log(data.getClass().toString());
+
         HLayout layout = new HLayout();
 
         Label label = new Label(dataList.getLabel());
@@ -138,8 +165,7 @@
 
     @Override
     public Object getMaxLower() {
-        Date d = dateRange.getFromDate();
-        return new Long(d.getTime());
+        return maxLower;
     }
 
 
@@ -320,13 +346,30 @@
     @Override
     public List<String> validate() {
         List<String> errors = new ArrayList<String>();
-        if (dateRange.getFromDate() == null ||
-            dateRange.getToDate() == null ||
-            !dateRange.getFromDate().before(dateRange.getToDate()))
-        {
+
+        Date from = dateRange.getFromDate();
+        Date to   = dateRange.getToDate();
+
+        if (from == null || to == null) {
             String msg = MSG.error_validate_date_range();
             errors.add(msg);
         }
+
+        long maxLow = (Long) getMaxLower();
+        long maxUpper = (Long) getMaxUpper();
+        long inLow = from.getTime();
+        long inUpper = to.getTime();
+
+        if (inLow < maxLow) {
+            errors.add(MSG.error_validate_date_range_invalid());
+        }
+        else if (inUpper > maxUpper) {
+            errors.add(MSG.error_validate_date_range_invalid());
+        }
+        else if (inLow > inUpper) {
+            errors.add(MSG.error_validate_date_range_invalid());
+        }
+
         return errors;
     }
 }

http://dive4elements.wald.intevation.org