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.vfs2.filter; 18 19 import java.io.Serializable; 20 21 import org.apache.commons.vfs2.FileFilter; 22 import org.apache.commons.vfs2.FileSelectInfo; 23 import org.apache.commons.vfs2.FileSystemException; 24 25 /** 26 * This filter produces a logical NOT of the filters specified. 27 * 28 * @author This code was originally ported from Apache Commons IO File Filter 29 * @see "http://commons.apache.org/proper/commons-io/" 30 * @since 2.4 31 */ 32 public class NotFileFilter implements FileFilter, Serializable { 33 34 private static final long serialVersionUID = 1L; 35 36 /** The filter. */ 37 private final FileFilter filter; 38 39 /** 40 * Constructs a new file filter that NOTs the result of another filter. 41 * 42 * @param filter the filter, must not be null 43 */ 44 public NotFileFilter(final FileFilter filter) { 45 if (filter == null) { 46 throw new IllegalArgumentException("The filter must not be null"); 47 } 48 this.filter = filter; 49 } 50 51 /** 52 * Returns the logical NOT of the underlying filter's return value for the same 53 * File. 54 * 55 * @param fileSelectInfo the File to check 56 * 57 * @return {@code true} if the filter returns {@code false} 58 * @throws FileSystemException Thrown for file system errors. 59 */ 60 @Override 61 public boolean accept(final FileSelectInfo fileSelectInfo) throws FileSystemException { 62 return !filter.accept(fileSelectInfo); 63 } 64 65 /** 66 * Provide a String representation of this file filter. 67 * 68 * @return a String representation 69 */ 70 @Override 71 public String toString() { 72 return super.toString() + "(" + filter.toString() + ")"; 73 } 74 75 }