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