001    package jp.osdl.jbento2;
002    
003    import java.io.File;
004    import java.util.ArrayList;
005    import java.util.Iterator;
006    import java.util.List;
007    import java.util.regex.Pattern;
008    
009    import org.apache.commons.io.filefilter.AbstractFileFilter;
010    
011    public class RegexNameFileFilter extends AbstractFileFilter {
012    
013        List patterns = new ArrayList();
014    
015        public RegexNameFileFilter() {
016        }
017    
018        public RegexNameFileFilter(String pattern) {
019            patterns.add(Pattern.compile(pattern));
020        }
021    
022        public RegexNameFileFilter(String[] patterns) {
023            for (int i = 0; i < patterns.length; i++) {
024                this.patterns.add(Pattern.compile(patterns[i]));
025            }
026        }
027    
028        public void addPattern(String pattern) {
029            patterns.add(Pattern.compile(pattern));
030        }
031    
032        public boolean accept(File file) {
033            for (Iterator ite = patterns.iterator(); ite.hasNext();) {
034                Pattern pattern = (Pattern) ite.next();
035                if (pattern.matcher(file.getName()).matches()) {
036                    return true;
037                }
038            }
039            return false;
040        }
041    
042        public boolean accept(File dir, String name) {
043            for (Iterator ite = patterns.iterator(); ite.hasNext();) {
044                Pattern pattern = (Pattern) ite.next();
045                if (pattern.matcher(name).matches()) {
046                    return true;
047                }
048            }
049            return false;
050        }
051    }