/** * */ package org.javabuilders.handler.validation.validator; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.javabuilders.BuildResult; import org.javabuilders.NamedObjectProperty; import org.javabuilders.handler.validation.ValidationMessage; import org.javabuilders.handler.validation.ValidationMessageList; /** * Date format validator * * @author Jacek Furmankiewicz */ public class DateFormatValidator extends AbstractValidator { private String dateFormat; private Locale locale; /** * @param property * @param label * @param messageFormat * @param result */ public DateFormatValidator(NamedObjectProperty property, String label, String messageFormat, BuildResult result, String dateFormat, Locale locale) { super(property, label, messageFormat, result); this.dateFormat = dateFormat; this.locale = locale; } /* * (non-Javadoc) * * @see * org.javabuilders.handler.validation.ICustomValidator#validate(java.lang * .Object, org.javabuilders.handler.validation.ValidationMessageList) */ public void validate(Object value, ValidationMessageList list) { String sValue = getStringValue(value); SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, locale); try { Date date = sdf.parse(sValue); if (!sdf.format(date).equals(sValue)) { // invalid date list.add(new ValidationMessage(getProperty(), getMessage(getLabel(), dateFormat))); } } catch (ParseException ex) { list.add(new ValidationMessage(getProperty(), getMessage(getLabel(), dateFormat))); } } /** * @return the dateFormat */ public String getDateFormat() { return dateFormat; } /** * @param dateFormat * the dateFormat to set */ public void setDateFormat(String dateFormat) { this.dateFormat = dateFormat; } /** * @return the locale */ public Locale getLocale() { return locale; } /** * @param locale * the locale to set */ public void setLocale(Locale locale) { this.locale = locale; } }