KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > clirr > core > ScopeSelector


1 //////////////////////////////////////////////////////////////////////////////
2
// Clirr: compares two versions of a java library for binary compatibility
3
// Copyright (C) 2003 - 2005 Lars Kühne
4
//
5
// This library is free software; you can redistribute it and/or
6
// modify it under the terms of the GNU Lesser General Public
7
// License as published by the Free Software Foundation; either
8
// version 2.1 of the License, or (at your option) any later version.
9
//
10
// This library is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
// Lesser General Public License for more details.
14
//
15
// You should have received a copy of the GNU Lesser General Public
16
// License along with this library; if not, write to the Free Software
17
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
//////////////////////////////////////////////////////////////////////////////
19
package net.sf.clirr.core;
20
21 import net.sf.clirr.core.spi.Scope;
22 import net.sf.clirr.core.spi.Scoped;
23
24 /**
25  * Selects zero or more java scope values (public, protected, package,
26  * private). An instance of this class is used when comparing two versions
27  * of an application to indicate what items are of interest. When the target
28  * audience is "normal" users of the applications, only changes to items
29  * which have public or protected scope are relevant. When the audience is
30  * developers of the applications, then package-scope and private-scope
31  * changes are also of interest.
32  *
33  * @author Simon Kitching
34  */

35 public final class ScopeSelector
36 {
37     private Scope scope = Scope.PROTECTED;
38
39     /**
40      * Construct an instance which selects public and protected objects and
41      * ignores package and private objects. The selectXXX methods can later
42      * be used to adjust this default behaviour.
43      */

44     public ScopeSelector()
45     {
46     }
47
48     /**
49      * Construct an instance which selects public and protected objects and
50      * ignores package and private objects. The selectXXX methods can later
51      * be used to adjust this default behaviour.
52      */

53     public ScopeSelector(Scope scope)
54     {
55         this.scope = scope;
56     }
57
58     /** Specify which scope objects are of interest. */
59     public void setScope(Scope scope)
60     {
61         this.scope = scope;
62     }
63
64     /**
65      * Get the scope that this object is configured with.
66      */

67     public Scope getScope()
68     {
69         return scope;
70     }
71
72     /**
73      * Return a string which indicates what scopes this object will consider
74      * to be selected (ie relevant).
75      */

76     public String JavaDoc toString()
77     {
78         return scope.getDesc();
79     }
80
81     /**
82      * Given a scoped object, return true if this object's scope is one of the
83      * values this object is configured to match.
84      *
85      * @param scoped is the object whose scope is to be checked.
86      * @return true if the object is selected.
87      */

88     public boolean isSelected(Scoped scoped)
89     {
90         return !scoped.getEffectiveScope().isLessVisibleThan(scope);
91     }
92
93     /**
94      * Return true if objects of the specified scope, or more visible,
95      * are selected by this selector.
96      *
97      * @param scope is the scope being checked
98      * @return true if objects of the specified scope are selected.
99      */

100     public boolean isSelected(Scope scope)
101     {
102         return !scope.isLessVisibleThan(this.scope);
103     }
104
105 }
106
107
Popular Tags