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