View Javadoc

1   /*
2    * $Id: AbstractDynamicPatternTask.java,v 1.1 2007/11/29 12:58:13 oeuillot Exp $
3    */
4   package org.rcfaces.core.internal.validator.impl;
5   
6   import java.util.regex.Pattern;
7   
8   import org.apache.commons.logging.Log;
9   import org.apache.commons.logging.LogFactory;
10  import org.rcfaces.core.internal.lang.StringAppender;
11  import org.rcfaces.core.validator.IClientValidatorContext;
12  import org.rcfaces.core.validator.IFilterTask;
13  
14  /**
15   * 
16   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
17   * @version $Revision: 1.1 $ $Date: 2007/11/29 12:58:13 $
18   */
19  public abstract class AbstractDynamicPatternTask extends
20          AbstractClientValidatorTask implements IFilterTask {
21      private static final String REVISION = "$Revision: 1.1 $";
22  
23      private static final Log LOG = LogFactory
24              .getLog(AbstractDynamicPatternTask.class);
25  
26      private static final String PATTERN_ATTRIBUTE = "regexp.pattern";
27  
28      protected abstract String getRegularExpression(
29              IClientValidatorContext context);
30  
31      protected Pattern getPattern(IClientValidatorContext context) {
32  
33          Pattern pattern = (Pattern) context.getAttribute(PATTERN_ATTRIBUTE);
34          if (pattern != null) {
35              return pattern;
36          }
37  
38          String regex = getRegularExpression(context);
39  
40          pattern = getPattern(regex);
41  
42          context.setAttribute(PATTERN_ATTRIBUTE, pattern);
43  
44          return pattern;
45      }
46  
47      public boolean applyFilter(IClientValidatorContext context, char keyChar) {
48  
49          Pattern pattern = getPattern(context);
50  
51          return pattern.matcher(new StringAppender(keyChar)).matches();
52      }
53  }