package org.talend.esb.client.app.validation; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.talend.esb.client.app.model.SearchRequestParameters; public class DatesConsistenceValidator implements ConstraintValidator<DatesConsistent, SearchRequestParameters> { public static final String DEFAULT_FORMAT = DateFormatValidator.DEFAULT_FORMAT; private String format; @Override public void initialize(DatesConsistent constraintAnnotation) { format = constraintAnnotation.format(); } @Override public boolean isValid(SearchRequestParameters value, ConstraintValidatorContext context) { if (value == null) { return true; } if (isBlank(value.getPickupDate()) || isBlank(value.getReturnDate())) { return true; } SimpleDateFormat sdf = new SimpleDateFormat(format); try { Date c = sdf.parse(value.getPickupDate()); Date d = sdf.parse(value.getReturnDate()); return !d.before(c); } catch (ParseException e) { // validation only in case of proper date format return true; } } private boolean isBlank(String s) { return (s == null || s.trim().length() == 0); } }