package com.bizosys.hsearch.validator; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import com.bizosys.oneline.util.StringUtils; public class DateValidator { private DateValidator() { } public static boolean isInRange(Date value, Date past, Date future) { return pastValue(value,past ) && futrureValue(value, future); } public static boolean pastValue(Date value, Date past) { past.setTime(past.getTime() - 1); return value.after(past); } public static boolean futrureValue(Date value, Date future) { future.setTime(future.getTime() + 1); return value.before(future); } public static boolean isValid(String val, String constraint ) { if ( null == val ) return false; try { DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH.mm.ss zzz"); df.setLenient(true); // this is important! Date typeVal = df.parse(val); if ( StringUtils.isEmpty(constraint)) return true; String[] pastFuture = StringUtils.getStrings(constraint, StringUtils.SEPARATOR_RECORD); boolean hasPast = ! StringUtils.isEmpty(pastFuture[0]); boolean hasFuture = ! StringUtils.isEmpty(pastFuture[1]); if ( hasPast ) { Date pastVal = df.parse(pastFuture[0]); if ( hasFuture ) return isInRange(typeVal, pastVal, df.parse(pastFuture[1])); else return pastValue(typeVal, pastVal); } else { if ( hasFuture ) return futrureValue(typeVal, df.parse(pastFuture[1])); else return true; } } catch (ParseException e) { return false; } catch (IllegalArgumentException e) { return false; } } }