View Javadoc

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 java.util.List;
26  import java.util.Vector;
27  
28  import org.apache.commons.validator.GenericValidator;
29  
30  /***
31   * Give this {@link CsvFieldValidator} one or more regular expressions, and it
32   * will not allow a String that fails any of them to pass validation.
33   * 
34   * @author robweber
35   * 
36   */
37  public class RegularExpressionCsvFieldValidator extends CsvFieldValidator {
38  
39      private List<String> regularExpressions;
40  
41      /***
42       * @param regularExpression
43       *            the regularExpression to set
44       */
45      public void setRegularExpressions(List<String> regularExpressions) {
46          this.regularExpressions = regularExpressions;
47      }
48  
49      public void setRegularExpression(String regularExpression) {
50          this.regularExpressions = new Vector<String>();
51          regularExpressions.add(regularExpression);
52      }
53  
54      @Override
55      protected boolean doValidate(
56              CsvFieldValidationContext csvFieldValidationContext)
57              throws Exception {
58          for (int i = 0; i < regularExpressions.size(); i++) {
59              if (!GenericValidator.matchRegexp(csvFieldValidationContext
60                      .getValueToValidate(), regularExpressions.get(i))) {
61                  throw new ValidationException("The value to validate, "
62                          + csvFieldValidationContext.getValueToValidate()
63                          + ", does not match the regular expression, "
64                          + regularExpressions.get(i) + ".");
65              }
66          }
67  
68          return false;
69      }
70  }