KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jdepend > framework > PackageFilter


1 package jdepend.framework;
2
3 import java.io.*;
4 import java.util.*;
5
6 /**
7  * The <code>PackageFilter</code> class is used to filter imported
8  * package names.
9  * <p>
10  * The default filter contains any packages declared in the
11  * <code>jdepend.properties</code> file, if such a file exists
12  * either in the user's home directory or somewhere in the classpath.
13  *
14  * @author <b>Mike Clark</b>
15  * @author Clarkware Consulting, Inc.
16  */

17
18 public class PackageFilter {
19
20     private Collection filtered;
21
22     /**
23      * Constructs a <code>PackageFilter</code> instance containing
24      * the filters specified in the <code>jdepend.properties</code> file,
25      * if it exists.
26      */

27     public PackageFilter() {
28         this(new ArrayList());
29         PropertyConfigurator config = new PropertyConfigurator();
30         addPackages(config.getFilteredPackages());
31     }
32
33     /**
34      * Constructs a <code>PackageFilter</code> instance containing
35      * the filters contained in the specified file.
36      *
37      * @param f Property file.
38      */

39     public PackageFilter(File f) {
40         this(new ArrayList());
41         PropertyConfigurator config = new PropertyConfigurator(f);
42         addPackages(config.getFilteredPackages());
43     }
44
45     /**
46      * Constructs a <code>PackageFilter</code> instance with the
47      * specified collection of package names to filter.
48      *
49      * @param packageNames Package names to filter.
50      */

51     public PackageFilter(Collection packageNames) {
52         filtered = new ArrayList();
53         addPackages(packageNames);
54     }
55
56     /**
57      * Returns the collection of filtered package names.
58      *
59      * @return Filtered package names.
60      */

61     public Collection getFilters() {
62         return filtered;
63     }
64
65     /**
66      * Indicates whether the specified package name passes this package filter.
67      *
68      * @param packageName Package name.
69      * @return <code>true</code> if the package name should be included;
70      * <code>false</code> otherwise.
71      */

72     public boolean accept(String JavaDoc packageName) {
73         for (Iterator i = getFilters().iterator(); i.hasNext();) {
74             String JavaDoc nameToFilter = (String JavaDoc)i.next();
75             if (packageName.startsWith(nameToFilter)) {
76                 return false;
77             }
78         }
79
80         return true;
81     }
82
83     public void addPackages(Collection packageNames) {
84         for (Iterator i = packageNames.iterator(); i.hasNext();) {
85             addPackage((String JavaDoc)i.next());
86         }
87     }
88
89     public void addPackage(String JavaDoc packageName) {
90         if (packageName.endsWith("*")) {
91             packageName = packageName.substring(0, packageName.length() - 1);
92         }
93
94         if (packageName.length() > 0) {
95             getFilters().add(packageName);
96         }
97     }
98 }
99
Popular Tags