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.apache.commons.fileupload.FileItem;
22 import org.seasar.cubby.validator.MessageHelper;
23 import org.seasar.cubby.validator.ScalarFieldValidator;
24 import org.seasar.cubby.validator.ValidationContext;
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class FileRegexpValidator 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 FileRegexpValidator(final String regex) {
58 this(regex, "valid.fileRegexp");
59 }
60
61
62
63
64
65
66
67
68
69 public FileRegexpValidator(final String regex, final String messageKey) {
70 this(Pattern.compile(regex), messageKey);
71 }
72
73
74
75
76
77
78 public FileRegexpValidator(Pattern pattern) {
79 this(pattern, "valid.fileRegexp");
80 }
81
82
83
84
85
86
87
88
89 public FileRegexpValidator(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 instanceof FileItem) {
96 final FileItem fileItem = (FileItem) value;
97 final Matcher matcher = pattern.matcher(fileItem.getName());
98 if (!matcher.matches()) {
99 context.addMessageInfo(this.messageHelper.createMessageInfo());
100 }
101 }
102 }
103 }