1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.validator.validators;
17
18 import java.util.regex.Matcher;
19 import java.util.regex.Pattern;
20
21 import org.seasar.cubby.validator.MessageHelper;
22 import org.seasar.cubby.validator.ScalarFieldValidator;
23 import org.seasar.cubby.validator.ValidationContext;
24 import org.seasar.framework.util.StringUtil;
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class RegexpValidator implements ScalarFieldValidator {
40
41
42
43
44 private final MessageHelper messageHelper;
45
46
47
48
49 private final Pattern pattern;
50
51
52
53
54
55
56
57 public RegexpValidator(final String regex) {
58 this(regex, "valid.regexp");
59 }
60
61
62
63
64
65
66
67
68
69 public RegexpValidator(final String regex, final String messageKey) {
70 this(Pattern.compile(regex), messageKey);
71 }
72
73
74
75
76
77
78 public RegexpValidator(final Pattern pattern) {
79 this(pattern, "valid.regexp");
80 }
81
82
83
84
85
86
87
88
89 public RegexpValidator(Pattern pattern, String messageKey) {
90 this.pattern = pattern;
91 this.messageHelper = new MessageHelper(messageKey);
92 }
93
94 public void validate(final ValidationContext context, final Object value) {
95 if (value == null) {
96 return;
97 }
98 if (value instanceof String) {
99 final String stringValue = (String) value;
100 if (StringUtil.isEmpty(stringValue)) {
101 return;
102 }
103 final Matcher matcher = pattern.matcher(stringValue);
104 if (matcher.matches()) {
105 return;
106 }
107 }
108 context.addMessageInfo(this.messageHelper.createMessageInfo());
109 }
110
111 }