4438 |
31 Mar 17 |
nicklas |
1 |
package net.sf.basedb.reggie.plugins.release; |
4438 |
31 Mar 17 |
nicklas |
2 |
|
6387 |
15 Sep 21 |
nicklas |
3 |
import java.util.Arrays; |
6387 |
15 Sep 21 |
nicklas |
4 |
import java.util.HashSet; |
4438 |
31 Mar 17 |
nicklas |
5 |
import java.util.Set; |
4438 |
31 Mar 17 |
nicklas |
6 |
|
4438 |
31 Mar 17 |
nicklas |
7 |
import net.sf.basedb.core.File; |
4438 |
31 Mar 17 |
nicklas |
8 |
import net.sf.basedb.util.filter.Filter; |
4438 |
31 Mar 17 |
nicklas |
9 |
|
4438 |
31 Mar 17 |
nicklas |
10 |
/** |
4438 |
31 Mar 17 |
nicklas |
Filter implementation for filtering files based on a whitelist or blacklist. |
4438 |
31 Mar 17 |
nicklas |
12 |
|
4438 |
31 Mar 17 |
nicklas |
@author nicklas |
4438 |
31 Mar 17 |
nicklas |
@since 4.10 |
4438 |
31 Mar 17 |
nicklas |
15 |
*/ |
4438 |
31 Mar 17 |
nicklas |
16 |
public class FileListFilter |
4438 |
31 Mar 17 |
nicklas |
17 |
implements Filter<File> |
4438 |
31 Mar 17 |
nicklas |
18 |
{ |
4438 |
31 Mar 17 |
nicklas |
19 |
|
4438 |
31 Mar 17 |
nicklas |
20 |
private final Set<String> names; |
4438 |
31 Mar 17 |
nicklas |
21 |
private final boolean whitelist; |
4438 |
31 Mar 17 |
nicklas |
22 |
private final Filter<File> chained; |
4438 |
31 Mar 17 |
nicklas |
23 |
|
4438 |
31 Mar 17 |
nicklas |
24 |
/** |
4438 |
31 Mar 17 |
nicklas |
Create a new file list filter. The list can be either a whitelist |
4438 |
31 Mar 17 |
nicklas |
or blacklist. An optional chained filter can also be specified. |
4438 |
31 Mar 17 |
nicklas |
27 |
|
4438 |
31 Mar 17 |
nicklas |
@param location Location to filter on |
4438 |
31 Mar 17 |
nicklas |
@param skipRemoved TRUE to skip files marked for removal |
4438 |
31 Mar 17 |
nicklas |
30 |
*/ |
4438 |
31 Mar 17 |
nicklas |
31 |
public FileListFilter(Set<String> names, boolean whitelist, Filter<File> chained) |
4438 |
31 Mar 17 |
nicklas |
32 |
{ |
4438 |
31 Mar 17 |
nicklas |
33 |
this.names = names; |
4438 |
31 Mar 17 |
nicklas |
34 |
this.whitelist = whitelist; |
4438 |
31 Mar 17 |
nicklas |
35 |
this.chained = chained; |
4438 |
31 Mar 17 |
nicklas |
36 |
} |
4438 |
31 Mar 17 |
nicklas |
37 |
|
6387 |
15 Sep 21 |
nicklas |
38 |
/** |
6387 |
15 Sep 21 |
nicklas |
Create a whitelist filter for the given files. |
6389 |
15 Sep 21 |
nicklas |
@since 4.32 |
6387 |
15 Sep 21 |
nicklas |
41 |
*/ |
6387 |
15 Sep 21 |
nicklas |
42 |
public FileListFilter(String... names) |
6387 |
15 Sep 21 |
nicklas |
43 |
{ |
6387 |
15 Sep 21 |
nicklas |
44 |
this(new HashSet<>(Arrays.asList(names)), true, null); |
6387 |
15 Sep 21 |
nicklas |
45 |
} |
6387 |
15 Sep 21 |
nicklas |
46 |
|
4438 |
31 Mar 17 |
nicklas |
47 |
@Override |
4438 |
31 Mar 17 |
nicklas |
48 |
public boolean evaluate(File f) |
4438 |
31 Mar 17 |
nicklas |
49 |
{ |
4438 |
31 Mar 17 |
nicklas |
50 |
return names.contains(f.getName()) == whitelist && (chained == null || chained.evaluate(f)); |
4438 |
31 Mar 17 |
nicklas |
51 |
} |
4438 |
31 Mar 17 |
nicklas |
52 |
|
4438 |
31 Mar 17 |
nicklas |
53 |
} |