1
2
3
4
5
6
7 package org.mule.transport.file.filters;
8
9 import java.util.regex.Matcher;
10 import java.util.regex.Pattern;
11
12
13
14
15
16
17 public class FilenameRegexFilter extends FilenameWildcardFilter
18 {
19 protected volatile Pattern[] compiledPatterns = null;
20
21
22
23
24
25
26
27
28
29 @Override
30 public boolean accept(Object object)
31 {
32 if (object == null)
33 {
34 return false;
35 }
36
37 boolean foundMatch = false;
38
39 if (compiledPatterns != null)
40 {
41 for (int i = 0; i < compiledPatterns.length; i++)
42 {
43 Pattern pattern = compiledPatterns[i];
44 String string = object.toString();
45
46
47 Matcher matcher = pattern.matcher(string);
48 foundMatch = matcher.matches();
49
50 if (foundMatch)
51 {
52
53 break;
54 }
55 }
56 }
57
58 return foundMatch;
59 }
60
61 @Override
62 public void setCaseSensitive(boolean caseSensitive)
63 {
64 super.setCaseSensitive(caseSensitive);
65 this.setPattern(pattern);
66 }
67
68 @Override
69 public void setPattern(String pattern)
70 {
71 super.setPattern(pattern);
72
73 if (patterns != null)
74 {
75 compiledPatterns = new Pattern[patterns.length];
76
77 for (int i = 0; i < patterns.length; i++)
78 {
79 if (!isCaseSensitive())
80 {
81
82 compiledPatterns[i] = Pattern.compile(patterns[i], Pattern.CASE_INSENSITIVE);
83 }
84 else
85 {
86 compiledPatterns[i] = Pattern.compile(patterns[i]);
87 }
88 }
89 }
90 }
91
92 }