View Javadoc

1   /*
2    * Copyright (C) 2007 Alf Mikula
3    * 
4    * This file is part of PromoteGo.
5    *
6    * PromoteGo is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * PromoteGo is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with PromoteGo.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.promotego.validators;
20  
21  import org.promotego.beans.Location;
22  import org.springframework.validation.Errors;
23  import org.springframework.validation.ValidationUtils;
24  import org.springframework.validation.Validator;
25  
26  public class LocationValidator implements Validator
27  {
28      private AddressValidator m_addressValidator = new AddressValidator("address");
29      
30      public boolean supports(@SuppressWarnings("unchecked")Class clazz)
31      {
32          return Location.class.isAssignableFrom(clazz);
33      }
34  
35      public void validate(Object target, Errors errors)
36      {
37      	Location theLocation = (Location)target;
38      	
39          ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "required", "Name is required.");
40          ValidationUtils.rejectIfEmptyOrWhitespace(errors, "phoneNumber", "required", "Phone number is required.");
41          
42          if (!theLocation.getPhoneNumber().matches("[0-9]{3}-[0-9]{3}-[0-9]{4}"))
43          {
44          	errors.rejectValue("phoneNumber", "incorrectFormat", "Phone number must have format XXX-XXX-XXXX.");
45          }
46          
47          m_addressValidator.validate(((Location)target).getAddress(), errors);
48      }
49  }