package com.revolsys.io.filter;
import java.io.File;
import java.io.FileFilter;
import java.util.regex.Pattern;
import com.revolsys.io.FileUtil;
/**
* The PatternFileNameFilter is a {@link FileFilter} that only returns files if they
* match the regular expression.
*
* @author Paul Austin
*/
public class PatternFileFilter implements FileFilter {
private boolean ignoreCase;
/** The regular expression pattern to match file names. */
private final Pattern pattern;
/**
* Construct a new PatternFileNameFilter.
*
* @param regex The regular expression.
*/
public PatternFileFilter(final String regex) {
this.pattern = Pattern.compile(regex);
}
public PatternFileFilter(String regex, final boolean ignoreCase) {
if (ignoreCase) {
regex = regex.toLowerCase();
}
this.pattern = Pattern.compile(regex);
this.ignoreCase = ignoreCase;
}
/**
* Check to see if the file should be included in the list of matched files
*
* @param file The file.
* @return True if the file matched, false otherwise.
*/
@Override
public boolean accept(final File file) {
String fileName = FileUtil.getFileName(file);
if (this.ignoreCase) {
fileName = fileName.toUpperCase();
}
return this.pattern.matcher(fileName).matches();
}
}