package org.toobsframework.biz.validation; import java.util.Date; import java.util.GregorianCalendar; import java.util.Map; import org.springframework.validation.ValidationUtils; /** * A class encapsulating stateless utility functions to be used * from validators within the same package. */ public class CustomValidationUtils extends ValidationUtils { /** * Retrieves the stored value in the Map argument, retrieving just the first * value in the array if the stored value is an array of Strings. */ public static String getPostedPropertyValue(String key, Map properties) { String postedValue = null; Object storedValue = properties.get(key); if(storedValue != null && storedValue.getClass().isArray()) { postedValue = ((String[])storedValue)[0]; } else { postedValue = (String)storedValue; } return postedValue; } /** * Checks to see if the string entered as input for an email field * is a valid email address via a regex match. * @param inputEmail * @return */ public static boolean rejectIfNotAValidEmail(String inputEmail) { //if input's not null, not empty, and doesn't match the pattern if(isFilledField(inputEmail) && !inputEmail.trim().toLowerCase().matches(".+@.+\\.[a-z]+")) { //then it's invalid return false; } //otherwise valid return true; } /** * Checks to see if the string entered as input for a url field * is a valid url via a regex match. * @param inputUrl * @return */ public static boolean rejectIfNotAValidUrl(String inputUrl) { //OLD PATTERN //"[a-zA-Z0-9.:/?&=]+")) //if input's not null, not empty, and doesn't match the pattern if(isFilledField(inputUrl) && !inputUrl.trim().matches( "((www.|(http|https|ftp|news|file)+://|)[_.A-Za-z0-9-]+.[A-Za-z0-9/_:@=.+?,##%&~-]*[^.|\'|# |!|(|?|,| |>|<|;|)])" )) { //then it's invalid return false; } //otherwise valid return true; } /** * Given three integer inputs representing a date, checks to * see if the specified date is after today's date. * @param day - int 1-31 * @param month - int 1-12 * @param year * @return */ public static boolean rejectIfDayMonthYearBeforeToday(Integer day, Integer month, Integer year) { if(day != null && month != null && year != null) { //construct Calendar object //set time fields with inputted parameters GregorianCalendar cal = new GregorianCalendar(); // note month conversion: Calendar expects 0 based month param cal.set(year, month - 1, day); //get a date object out of the Date closingDate = cal.getTime(); //if the closing date is before right now, //then throw a validation error if(closingDate.before(new Date(System.currentTimeMillis()))) { return false; } } return true; } /** * Checks to see if the string passed as argument is non null and * non empty * @param inputString * @return */ public static boolean isFilledField(String inputString) { if(inputString != null && !"".equals(inputString.trim())) { return true; } return false; } }