/** * */ package br.com.cadastropessoal.util; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; /** * @author Felipe * */ public class Validator { public static boolean isValidDate(String dayMonthYear){ //This method will works fine if, and only if the paremeter come in this format: "dd/mm/yyyy" int minimumAge = 15; boolean valid = false; Calendar gc = GregorianCalendar.getInstance(); ArrayList<Integer> months31 = new ArrayList<Integer>(); //Months with 31 days ArrayList<Integer> months30 = new ArrayList<Integer>(); //Months with 30 days months31.add(1); //January months31.add(3); //March months31.add(5); //May months31.add(7); //July months31.add(8); //August months31.add(10);//October months31.add(12);//December months30.add(4); //April months30.add(6); //June months30.add(9); //September months30.add(11);//November if(dayMonthYear != null && dayMonthYear.contains("/")){ String[] date = dayMonthYear.split("/"); int day = Integer.parseInt(date[0]); int month = Integer.parseInt(date[1]); int year = Integer.parseInt(date[2]); boolean validDay = day > 0 && day < 32; boolean validMonth = month > 0 && month < 13; boolean validYear = year > 1900 && year < gc.get(Calendar.YEAR) - minimumAge; if(validDay && validMonth && validYear){ if(months31.contains(month)){ valid = day < 32; }else if(months30.contains(month)){ valid = day < 31; }else{ //Validating february valid = day < 30; } } } return valid; } public static boolean isValidCpf(String cpf){ //This method will works fine if, and only if the paremeter come in this format: "999.999.999-99" boolean valid = false; if(cpf != null && cpf.length() > 11){ cpf = cpf.substring(0, 3) + cpf.substring(4, 7) + cpf.substring(8, 11) + cpf.substring(12); cpf = cpf.trim(); if (cpf.length() == 11) { int firstDigit = Integer.parseInt(cpf.substring(0, 1)); for (int x = 1; x < 11; x++){ if (firstDigit != Integer.parseInt(cpf.substring(x, x+1))){ valid = true; break; }else{ valid = false; } } if (valid){ for (int j = 2; j > 0; j--){ int digit = 0; int sum = 0; int multiplied = 0; for (int i = 0; i < 11 - j; i++){ multiplied = Integer.parseInt(cpf.substring(i, i+1)) * ((11 - j + 1) - i); sum += multiplied; } digit = sum % 11; if (digit > 2){ digit = 11 - digit; }else{ digit = 0; } if (digit != Integer.parseInt(cpf.substring(cpf.length() - j, cpf.length() - j + 1))){ valid = false; break; } } } } } return valid; } }