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
40 public class RegexpValidator implements ScalarFieldValidator {
41
42
43
44
45 private final MessageHelper messageHelper;
46
47
48
49
50 private final Pattern pattern;
51
52
53
54
55
56
57
58 public RegexpValidator(final String regex) {
59 this(regex, "valid.regexp");
60 }
61
62
63
64
65
66
67
68
69
70 public RegexpValidator(final String regex, final String messageKey) {
71 this(Pattern.compile(regex), messageKey);
72 }
73
74
75
76
77
78
79
80 public RegexpValidator(final Pattern pattern) {
81 this(pattern, "valid.regexp");
82 }
83
84
85
86
87
88
89
90
91
92 public RegexpValidator(final Pattern pattern, final String messageKey) {
93 this.pattern = pattern;
94 this.messageHelper = new MessageHelper(messageKey);
95 }
96
97
98
99
100 public void validate(final ValidationContext context, final Object value) {
101 if (value == null) {
102 return;
103 }
104 if (value instanceof String) {
105 final String stringValue = (String) value;
106 if (StringUtil.isEmpty(stringValue)) {
107 return;
108 }
109 final Matcher matcher = pattern.matcher(stringValue);
110 if (matcher.matches()) {
111 return;
112 }
113 }
114 context.addMessageInfo(this.messageHelper.createMessageInfo());
115 }
116
117 }