1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.io.filefilter; 18 19 import java.io.File; 20 import java.io.FileFilter; 21 import java.io.FilenameFilter; 22 23 /** 24 * This class turns a Java FileFilter or FilenameFilter into an IO FileFilter. 25 * 26 * @since Commons IO 1.0 27 * @version $Revision: 471628 $ $Date: 2006-11-06 05:06:45 +0100 (Mo, 06 Nov 2006) $ 28 * 29 * @author Stephen Colebourne 30 */ 31 public class DelegateFileFilter extends AbstractFileFilter { 32 33 /** The Filename filter */ 34 private FilenameFilter filenameFilter; 35 /** The File filter */ 36 private FileFilter fileFilter; 37 38 /** 39 * Constructs a delegate file filter around an existing FilenameFilter. 40 * 41 * @param filter the filter to decorate 42 */ 43 public DelegateFileFilter(FilenameFilter filter) { 44 if (filter == null) { 45 throw new IllegalArgumentException("The FilenameFilter must not be null"); 46 } 47 this.filenameFilter = filter; 48 } 49 50 /** 51 * Constructs a delegate file filter around an existing FileFilter. 52 * 53 * @param filter the filter to decorate 54 */ 55 public DelegateFileFilter(FileFilter filter) { 56 if (filter == null) { 57 throw new IllegalArgumentException("The FileFilter must not be null"); 58 } 59 this.fileFilter = filter; 60 } 61 62 /** 63 * Checks the filter. 64 * 65 * @param file the file to check 66 * @return true if the filter matches 67 */ 68 public boolean accept(File file) { 69 if (fileFilter != null) { 70 return fileFilter.accept(file); 71 } else { 72 return super.accept(file); 73 } 74 } 75 76 /** 77 * Checks the filter. 78 * 79 * @param dir the directory 80 * @param name the filename in the directory 81 * @return true if the filter matches 82 */ 83 public boolean accept(File dir, String name) { 84 if (filenameFilter != null) { 85 return filenameFilter.accept(dir, name); 86 } else { 87 return super.accept(dir, name); 88 } 89 } 90 91 }