1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2.filter;
18
19 import java.io.Serializable;
20 import java.util.ArrayList;
21 import java.util.Arrays;
22 import java.util.Collections;
23 import java.util.List;
24
25 import org.apache.commons.vfs2.FileFilter;
26 import org.apache.commons.vfs2.FileSelectInfo;
27 import org.apache.commons.vfs2.FileSystemException;
28
29
30
31
32
33
34
35
36
37
38
39 public class OrFileFilter implements FileFilter, ConditionalFileFilter, Serializable {
40
41 private static final long serialVersionUID = 1L;
42
43
44 private final List<FileFilter> fileFilters;
45
46
47
48
49 public OrFileFilter() {
50 this.fileFilters = new ArrayList<>();
51 }
52
53
54
55
56
57
58 public OrFileFilter(final FileFilter... filters) {
59 if (filters == null || filters.length == 0) {
60 throw new IllegalArgumentException("The filters must not be null or empty");
61 }
62 for (final FileFilter filter : filters) {
63 if (filter == null) {
64 throw new IllegalArgumentException("Null filters are not allowed");
65 }
66 }
67 this.fileFilters = new ArrayList<>(Arrays.asList(filters));
68 }
69
70
71
72
73
74
75
76 public OrFileFilter(final List<FileFilter> fileFilters) {
77 if (fileFilters == null) {
78 this.fileFilters = new ArrayList<>();
79 } else {
80 this.fileFilters = new ArrayList<>(fileFilters);
81 }
82 }
83
84 @Override
85 public boolean accept(final FileSelectInfo fileSelectInfo) throws FileSystemException {
86 for (final FileFilter fileFilter : fileFilters) {
87 if (fileFilter.accept(fileSelectInfo)) {
88 return true;
89 }
90 }
91 return false;
92 }
93
94 @Override
95 public void addFileFilter(final FileFilter fileFilter) {
96 this.fileFilters.add(fileFilter);
97 }
98
99 @Override
100 public List<FileFilter> getFileFilters() {
101 return Collections.unmodifiableList(this.fileFilters);
102 }
103
104 @Override
105 public boolean removeFileFilter(final FileFilter fileFilter) {
106 return this.fileFilters.remove(fileFilter);
107 }
108
109 @Override
110 public void setFileFilters(final List<FileFilter> fileFilters) {
111 this.fileFilters.clear();
112 this.fileFilters.addAll(fileFilters);
113 }
114
115
116
117
118
119
120 @Override
121 public String toString() {
122 final StringBuilder buffer = new StringBuilder();
123 buffer.append(super.toString());
124 buffer.append("(");
125 if (fileFilters != null) {
126 for (int i = 0; i < fileFilters.size(); i++) {
127 if (i > 0) {
128 buffer.append(",");
129 }
130 final Object filter = fileFilters.get(i);
131 buffer.append(filter == null ? "null" : filter.toString());
132 }
133 }
134 buffer.append(")");
135 return buffer.toString();
136 }
137
138 }