1 /* 2 * Copyright 2002-2005 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.apache.commons.vfs; 17 18 /** 19 * This interface is used to select files when traversing a file hierarchy. 20 * 21 * @author <a HREF="mailto:adammurdoch@apache.org">Adam Murdoch</a> 22 * @see Selectors 23 */ 24 public interface FileSelector 25 { 26 /** 27 * Determines if a file or folder should be selected. This method is 28 * called in depthwise order (that is, it is called for the children 29 * of a folder before it is called for the folder itself). 30 * 31 * @param fileInfo the file or folder to select. 32 * @return true if the file should be selected. 33 */ 34 boolean includeFile(FileSelectInfo fileInfo) 35 throws Exception; 36 37 /** 38 * Determines whether a folder should be traversed. If this method returns 39 * true, {@link #includeFile} is called for each of the children of 40 * the folder, and each of the child folders is recursively traversed. 41 * <p/> 42 * <p>This method is called on a folder before {@link #includeFile} 43 * is called. 44 * 45 * @param fileInfo the file or folder to select. 46 * @return true if the folder should be traversed. 47 */ 48 boolean traverseDescendents(FileSelectInfo fileInfo) 49 throws Exception; 50 } 51