/* * Copyright 2012 MoonJava LTDA. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package br.com.moonjava.flight.util; import java.util.GregorianCalendar; import java.util.ResourceBundle; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.joda.time.DateTime; import org.joda.time.IllegalFieldValueException; import org.joda.time.LocalDate; /** * @version 1.0 Sep 7, 2012 * @contact tiago.aguiar@moonjava.com.br * */ // Verifica Strings vindo da View public class VerifierString { public static boolean containsSpace(String word) { Pattern pattern = Pattern.compile("\\s"); Matcher matcher = pattern.matcher(word); return matcher.find(); } public static boolean isBirthDay(String word, ResourceBundle bundle) { boolean birthDay = false; String country = bundle.getString("country"); LocalDate date = FormatDateTime.parseToLocalDate(word, country); boolean leapYear = new GregorianCalendar().isLeapYear(date.getYear()); LocalDate now = new LocalDate(); // US MM/DD/YYYY if (country.equals("US")) { // Não pode conter 30 e 31 em fevereiro e nem ser maior que a data atual if (!word.startsWith("02/30") && !word.startsWith("02/31") && date.isBefore(now) || date.isEqual(now)) { // Se for bissexto deve considerar 02/29 if (word.startsWith("02/29") && leapYear || !word.startsWith("02/29")) { Pattern pattern = Pattern .compile("(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d)"); Matcher matcher = pattern.matcher(word); birthDay = matcher.find(); } } // BR DD/MM/YYYY } else { if (!word.startsWith("30/02") && !word.startsWith("31/02") && date.isBefore(now) || date.isEqual(now)) { // Não pode conter 30 e 31 em fevereiro e nem ser maior que a data atual if (word.startsWith("29/02") && leapYear || !word.startsWith("29/02")) { // Se for bissexto deve considerar 29/02 Pattern pattern = Pattern .compile("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19|20)\\d\\d)"); Matcher matcher = pattern.matcher(word); birthDay = matcher.find(); } } } return birthDay; } public static boolean isDateValid(String word, ResourceBundle bundle) { boolean birthDay = false; String country = bundle.getString("country"); DateTime date = FormatDateTime.parseToDateTime(word, country); boolean leapYear = new GregorianCalendar().isLeapYear(date.getYear()); // US MM/DD/YYYY if (country.equals("US")) { // Não pode conter 30 e 31 em fevereiro e nem ser maior que a data atual if (!word.startsWith("02/30") && !word.startsWith("02/31")) { // Se for bissexto deve considerar 02/29 if (word.startsWith("02/29") && leapYear || !word.startsWith("02/29")) { Pattern pattern = Pattern .compile("(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9])"); Matcher matcher = pattern.matcher(word); birthDay = matcher.find(); } } // BR DD/MM/YYYY } else { if (!word.startsWith("30/02") && !word.startsWith("31/02")) { // Não pode conter 30 e 31 em fevereiro e nem ser maior que a data atual if (word.startsWith("29/02") && leapYear || !word.startsWith("29/02")) { // Se for bissexto deve considerar 29/02 Pattern pattern = Pattern .compile("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19|20)\\d\\d) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9])"); Matcher matcher = pattern.matcher(word); birthDay = matcher.find(); } } } return birthDay; } public static boolean isValidate(String word) { try { boolean validate = false; LocalDate now = new LocalDate(); String year = word.substring(3, 7); String month = word.substring(0, 2); LocalDate date = new LocalDate() .withYear(Integer.parseInt(year)) .withMonthOfYear(Integer.parseInt(month)); if (date.isAfter(now) || date.isEqual(now)) { Pattern pattern = Pattern.compile("(0[1-9]|1[012])/((19|20)\\d\\d)"); Matcher matcher = pattern.matcher(word); validate = matcher.find(); } return validate; } catch (IllegalFieldValueException e) { return false; } } }