/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.util.filter;
import java.io.File;
public class FileExtensionFilter implements Filter<File> {
protected final String[] extensions;
protected final boolean ignoreCase;
/**
* Matches any files with the given extensions, ignoring case
*/
public FileExtensionFilter(String... extensions) {
this(true, extensions);
}
/**
* Matches any files with the given extensions, optionally ignoring case.
*/
public FileExtensionFilter(boolean ignoreCase, String... extensions) {
this.extensions = extensions;
this.ignoreCase = ignoreCase;
if (ignoreCase) {
for (int i = 0; i < this.extensions.length; i++) {
this.extensions[i] = this.extensions[i].toUpperCase();
}
}
}
@Override
public boolean filter(File file) {
boolean accept = extensions == null;
if (!accept) {
for (String extension : extensions) {
String name = file.getName();
if (ignoreCase ? name.toUpperCase().endsWith(extension) : name.endsWith(extension)) {
accept = true;
break;
}
}
}
return accept;
}
}