1
2
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
17
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 }