1 package org.codehaus.mojo.appassembler.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import org.apache.commons.io.filefilter.FileFilterUtils;
28 import org.apache.commons.io.filefilter.IOFileFilter;
29 import org.apache.commons.io.filefilter.RegexFileFilter;
30
31
32
33
34
35
36 public class FileFilterHelper
37 {
38
39
40
41
42
43
44
45 public static IOFileFilter makeDirectoryAware( IOFileFilter filter, String directoryName )
46 {
47
48 IOFileFilter directoryAwareFilter =
49 FileFilterUtils.notFileFilter( FileFilterUtils.andFileFilter( FileFilterUtils.directoryFileFilter(),
50 FileFilterUtils.nameFileFilter( directoryName ) ) );
51
52 return FileFilterUtils.andFileFilter( filter, directoryAwareFilter );
53 }
54
55
56
57
58
59
60
61
62 public static IOFileFilter makeFileNameAware( IOFileFilter filter, String fileName )
63 {
64 IOFileFilter directoryAwareFilter =
65 FileFilterUtils.notFileFilter( FileFilterUtils.andFileFilter( FileFilterUtils.fileFileFilter(),
66 FileFilterUtils.nameFileFilter( fileName ) ) );
67
68 return FileFilterUtils.andFileFilter( filter, directoryAwareFilter );
69 }
70
71
72
73
74
75
76
77
78 public static IOFileFilter makeSuffixAware( IOFileFilter filter, String suffixFileName )
79 {
80 IOFileFilter directoryAwareFilter =
81 FileFilterUtils.notFileFilter( FileFilterUtils.andFileFilter( FileFilterUtils.fileFileFilter(),
82 FileFilterUtils.suffixFileFilter( suffixFileName ) ) );
83
84 return FileFilterUtils.andFileFilter( filter, directoryAwareFilter );
85 }
86
87
88
89
90
91
92
93
94 public static IOFileFilter makePatternFileNameAware( IOFileFilter filter, String pattern )
95 {
96 IOFileFilter directoryAwareFilter =
97 FileFilterUtils.notFileFilter( FileFilterUtils.andFileFilter( FileFilterUtils.fileFileFilter(),
98 new RegexFileFilter( pattern ) ) );
99
100 return FileFilterUtils.andFileFilter( filter, directoryAwareFilter );
101 }
102
103
104
105
106
107
108 public static IOFileFilter createDefaultFilter()
109 {
110
111 IOFileFilter filter = null;
112
113
114
115 filter = FileFilterUtils.makeCVSAware( filter );
116
117
118 filter = makeFileNameAware( filter, ".cvsignore" );
119
120
121
122 filter = FileFilterUtils.makeSVNAware( filter );
123
124
125
126 filter = makeDirectoryAware( filter, "RCS" );
127
128
129
130 filter = makeDirectoryAware( filter, "SCCS" );
131
132
133 filter = makeSuffixAware( filter, "~" );
134 filter = makePatternFileNameAware( filter, "#.*#" );
135 filter = makePatternFileNameAware( filter, "%.*%" );
136 filter = makeSuffixAware( filter, ".#" );
137 filter = makeSuffixAware( filter, "._" );
138
139
140
141 filter = makeFileNameAware( filter, "vssver.scc" );
142
143
144
145 filter = makeFileNameAware( filter, "project.pj" );
146
147
148
149 filter = makeDirectoryAware( filter, ".arch-ids" );
150
151
152
153 filter = makeDirectoryAware( filter, ".bzr" );
154
155
156
157 filter = makeFileNameAware( filter, ".MySCMServerInfo" );
158
159
160
161 filter = makeDirectoryAware( filter, ".DS_Store" );
162
163
164
165 filter = makeDirectoryAware( filter, ".metadata" );
166
167
168
169 filter = makeDirectoryAware( filter, ".hg" );
170
171
172
173 filter = makeDirectoryAware( filter, ".git" );
174 filter = makeFileNameAware( filter, ".gitignore" );
175
176
177
178 filter = makeDirectoryAware( filter, "BitKeeper" );
179 filter = makeDirectoryAware( filter, "ChangeSet" );
180
181
182
183
184 filter = makeDirectoryAware( filter, "_darcs" );
185 filter = makeDirectoryAware( filter, ".darcsrepo" );
186
187 return filter;
188 }
189
190 }