package javacodebook.regex.filenamefilter;

import java.io.File;
import java.util.regex.*;

/**
 * Ein FilenameFilter, der anhand eines regulären Ausdrucks
 * überprüft, ob ein Dateiname dem gesuchten Namensschema
 * entspricht.
 *
 * @author  Dirk Brodersen
 */
public class RegexFilenameFilter implements java.io.FilenameFilter {
    
    //Der reguläre Ausdruck in kompilierter Form
    Pattern pattern = null;
    
    /**
     * Erzeugt einen neuen RegexFilenameFilter mit dem
     * angegebenen regulären Ausdruck.
     */
    public RegexFilenameFilter(String regexStr) {
        pattern = Pattern.compile(regexStr);
    }
    
    /**
     * Testet, ob ein angegebener Dateiname dem regulären Ausdruck genügt.
     * @param   dir    Das Verzeichnis, in dem die Datei gefunden wurde
     * @param   name   Der Name der Datei
     * @return  <code>true</code>, wenn der Dateiname dem Ausdruck genügt.
     */
    public boolean accept(File dir, String name) {
        Matcher matcher = pattern.matcher(name);
        boolean accepted = matcher.matches();
        return accepted;
    }
}
