1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/* 2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed to the Apache Software Foundation (ASF) under one or more 3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * contributor license agreements. See the NOTICE file distributed with 4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * this work for additional information regarding copyright ownership. 5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * The ASF licenses this file to You under the Apache License, Version 2.0 6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * (the "License"); you may not use this file except in compliance with 7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * the License. You may obtain a copy of the License at 8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, software 12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * See the License for the specific language governing permissions and 15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * limitations under the License. 16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage org.apache.commons.io.filefilter; 18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport java.io.File; 20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport java.io.Serializable; 21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/** 23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This filter produces a logical NOT of the filters specified. 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @since Commons IO 1.0 26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @version $Revision: 591058 $ $Date: 2007-11-01 15:47:05 +0000 (Thu, 01 Nov 2007) $ 27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @author Stephen Colebourne 29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class NotFileFilter extends AbstractFileFilter implements Serializable { 31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** The filter */ 33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private final IOFileFilter filter; 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Constructs a new file filter that NOTs the result of another filters. 37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param filter the filter, must not be null 39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws IllegalArgumentException if the filter is null 40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public NotFileFilter(IOFileFilter filter) { 42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (filter == null) { 43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new IllegalArgumentException("The filter must not be null"); 44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this.filter = filter; 46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Checks to see if both filters are true. 50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param file the File to check 52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if the filter returns false 53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean accept(File file) { 55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return ! filter.accept(file); 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Checks to see if both filters are true. 60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param file the File directory 62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param name the filename 63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if the filter returns false 64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean accept(File file, String name) { 66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return ! filter.accept(file, name); 67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Provide a String representaion of this file filter. 71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return a String representaion 73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 74bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public String toString() { 75bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return super.toString() + "(" + filter.toString() + ")"; 76bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 77bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 78bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook} 79