Mercurial > dive4elements > river
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; } }