1 /***
2 * Copyright (C) 2008 rweber <quietgenie@users.sourceforge.net>
3 *
4 * This file is part of CsvObjectMapper.
5 *
6 * CsvObjectMapper is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser 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 * CsvObjectMapper 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 Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with CsvObjectMapper. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 /***
21 *
22 */
23 package com.projectnine.csvmapper;
24
25 import org.apache.commons.validator.GenericValidator;
26
27 /***
28 * This {@link CsvFieldValidator} prevents non-standard US Postal codes from
29 * passing validation.
30 *
31 * @author robweber
32 * @deprecated Use {@link RegularExpressionCsvFieldValidator} with a regular
33 * expression of "^//d{5}//p{Punct}?//s?(?://d{4})?$" instead.
34 */
35 public class PostalCodeCsvFieldValidator extends CsvFieldValidator {
36 private static final String ZIPCODE_REGEXP = "^//d{5}([-]?//d{4})?$";
37
38 public static void main(String[] args) throws Exception {
39 CsvFieldValidationContext context = new CsvFieldValidationContext();
40 context.setValueToValidate("12222-0000");
41 new PostalCodeCsvFieldValidator().execute(context);
42 }
43
44 @Override
45 protected boolean doValidate(
46 CsvFieldValidationContext csvFieldValidationContext)
47 throws Exception {
48 if (GenericValidator.matchRegexp(csvFieldValidationContext
49 .getValueToValidate(), ZIPCODE_REGEXP)) {
50 return false;
51 }
52
53 throw new ValidationException("The tendered zip code, "
54 + csvFieldValidationContext.getValueToValidate()
55 + ", is not a valid zip code.");
56 }
57 }