View Javadoc

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.finder;
18  
19  import java.io.File;
20  import java.util.Map;
21  
22  import org.apache.commons.io.filefilter.DirectoryFileFilter;
23  import org.apache.commons.io.filefilter.CanReadFileFilter;
24  import org.apache.commons.io.filefilter.CanWriteFileFilter;
25  import org.apache.commons.io.filefilter.EmptyFileFilter;
26  import org.apache.commons.io.filefilter.HiddenFileFilter;
27  import org.apache.commons.io.filefilter.IOFileFilter;
28  import org.apache.commons.io.filefilter.NotFileFilter;
29  
30  /**
31   * A Finder of Files. Though the structure the files are in is 
32   * unspecified.
33   */
34  public interface Finder {
35  
36      // MODIFIER
37      public static final String NOT = "NOT_";
38  
39      // OPTIONS
40      public static final String DAYSTART = "DAYSTART";
41      public static final String DEPTH = "DEPTH";
42      public static final String MAXDEPTH = "MAXDEPTH";
43      public static final String MINDEPTH = "MINDEPTH";
44      public static final String IGNORE_HIDDEN_DIRS = "IGNORE_HIDDEN_DIRS";
45  
46      // Time based tests
47      public static final String MIN = "MIN";
48      public static final String NEWER = "NEWER";
49      public static final String TIME = "TIME";
50  
51      // size based tests
52      public static final IOFileFilter EMPTY     = EmptyFileFilter.EMPTY;
53      public static final IOFileFilter NOT_EMPTY = EmptyFileFilter.NOT_EMPTY;
54      public static final String SIZE = "SIZE";
55  
56      // name based tests
57      public static final String NAME = "NAME";
58      public static final String INAME = "INAME";
59      public static final String PATH = "PATH";
60      public static final String IPATH = "IPATH";
61      public static final String REGEX = "REGEX";
62      public static final String IREGEX = "IREGEX";
63  
64      // type of file
65      public static final IOFileFilter DIRECTORY  = DirectoryFileFilter.INSTANCE;
66      public static final IOFileFilter FILE       = new NotFileFilter(DirectoryFileFilter.INSTANCE);
67      public static final IOFileFilter HIDDEN     = HiddenFileFilter.HIDDEN;
68      public static final IOFileFilter VISIBLE    = HiddenFileFilter.VISIBLE;
69  
70      // permission replacements
71      public static final IOFileFilter CAN_READ     = CanReadFileFilter.CAN_READ;
72      public static final IOFileFilter CANNOT_READ  = CanReadFileFilter.CANNOT_READ;
73      public static final IOFileFilter CAN_WRITE    = CanWriteFileFilter.CAN_WRITE;
74      public static final IOFileFilter CANNOT_WRITE = CanWriteFileFilter.CANNOT_WRITE;
75  
76      public void addFindListener(FindListener fl);
77      public void removeFindListener(FindListener fl);
78  
79      public File[] find(File root);
80      public File[] find(File root, Map options);
81  
82  }