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