001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 002 // The Molly framework is freely distributable under the terms of an 003 // MIT-style license. For details, see the molly pages web site at: 004 // http://www.mollypages.org/. Use, modify, have fun ! 005 006 package fc.web.forms; 007 008 import javax.servlet.*; 009 import javax.servlet.http.*; 010 import java.io.*; 011 import java.util.*; 012 import java.text.*; 013 import java.util.regex.*; 014 015 import fc.jdbc.*; 016 import fc.io.*; 017 import fc.util.*; 018 019 /** 020 Validates a date. 021 022 @author hursh jain 023 **/ 024 public final class VDate extends FieldValidator 025 { 026 static final DateFormat df; 027 static final GregorianCalendar cal; 028 029 static { 030 df = DateFormat.getDateInstance(DateFormat.SHORT); 031 df.setLenient(false); 032 033 cal = (GregorianCalendar) df.getCalendar(); 034 cal.setLenient(false); 035 } 036 037 public VDate(AbstractText field, String errorMessage) 038 { 039 super(field, errorMessage); 040 } 041 042 /** 043 Works with any field that returns a <b>String</b> via it's 044 {@link Field#getValue} method. The date string can be any 045 valid string that is parseable by the {@link 046 java.text.DateFormat.parse(String)} method (even if it's not 047 semantically valid). For example, the following parses OK: 048 <tt>02/<b>29</b>/1980</tt> 049 050 @throws ClassCastException If the field's {@link Field#getValue} method 051 does not return a String 052 **/ 053 public boolean validate(FormData fd, HttpServletRequest req) 054 { 055 String val = ((AbstractText) field).getValue(fd); 056 057 if (val == null) 058 return false; 059 060 boolean result = true; 061 try { 062 df.parse(val); 063 064 } 065 catch (Exception e) { 066 result = false; 067 } 068 return result; 069 } 070 071 } //~class VDate 072