KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > pmd > RuleSet


1 /**
2  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3  */

4 package net.sourceforge.pmd;
5
6 import java.util.ArrayList JavaDoc;
7 import java.util.Collection JavaDoc;
8 import java.util.Iterator JavaDoc;
9 import java.util.List JavaDoc;
10
11
12 /**
13  * This class represents a collection of rules.
14  *
15  * @see Rule
16  */

17 public class RuleSet {
18
19     private List JavaDoc rules = new ArrayList JavaDoc();
20     private String JavaDoc name = "";
21     private String JavaDoc description = "";
22     private Language language;
23
24     /**
25      * Returns the number of rules in this ruleset
26      *
27      * @return an int representing the number of rules
28      */

29     public int size() {
30         return rules.size();
31     }
32
33     /**
34      * Add a new rule to this ruleset
35      *
36      * @param rule the rule to be added
37      */

38     public void addRule(Rule rule) {
39         if (rule == null) {
40             throw new RuntimeException JavaDoc("Null Rule reference added to a RuleSet; that's a bug somewhere in PMD");
41         }
42         rules.add(rule);
43     }
44
45     /**
46      * Returns the actual Collection of rules in this ruleset
47      *
48      * @return a Collection with the rules. All objects are of type {@link Rule}
49      */

50     public Collection JavaDoc getRules() {
51         return rules;
52     }
53
54     /**
55      * @return true if any rule in the RuleSet needs the DFA layer
56      */

57     public boolean usesDFA() {
58         for (Iterator JavaDoc i = rules.iterator(); i.hasNext();) {
59             Rule r = (Rule) i.next();
60             if (r.usesDFA()) {
61                 return true;
62             }
63         }
64         return false;
65     }
66
67     /**
68      * Returns the Rule with the given name
69      *
70      * @param ruleName the name of the rule to find
71      * @return the rule or null if not found
72      */

73     public Rule getRuleByName(String JavaDoc ruleName) {
74         Rule rule = null;
75         for (Iterator JavaDoc i = rules.iterator(); i.hasNext() && (rule == null);) {
76             Rule r = (Rule) i.next();
77             if (r.getName().equals(ruleName)) {
78                 rule = r;
79             }
80         }
81         return rule;
82     }
83
84     /**
85      * Add a whole RuleSet to this RuleSet
86      *
87      * @param ruleSet the RuleSet to add
88      */

89     public void addRuleSet(RuleSet ruleSet) {
90         rules.addAll(rules.size(), ruleSet.getRules());
91     }
92
93     public void apply(List JavaDoc acuList, RuleContext ctx) {
94         Iterator JavaDoc rs = rules.iterator();
95         while (rs.hasNext()) {
96             Rule rule = (Rule) rs.next();
97             rule.apply(acuList, ctx);
98         }
99     }
100
101     /**
102      * @see java.lang.Object#equals(java.lang.Object)
103      */

104     public boolean equals(Object JavaDoc o) {
105         if ((o == null) || !(o instanceof RuleSet)) {
106             return false; // Trivial
107
}
108
109         if (this == o) {
110             return true; // Basic equality
111
}
112
113         RuleSet ruleSet = (RuleSet) o;
114         return this.getName().equals(ruleSet.getName()) && this.getRules().equals(ruleSet.getRules());
115     }
116
117     /**
118      * @see java.lang.Object#hashCode()
119      */

120     public int hashCode() {
121         return this.getName().hashCode() + 13 * this.getRules().hashCode();
122     }
123
124     public Language getLanguage() {
125         return language;
126     }
127
128     public void setLanguage(Language language) {
129         this.language = language;
130     }
131
132     public String JavaDoc getName() {
133         return name;
134     }
135
136     public void setName(String JavaDoc name) {
137         this.name = name;
138     }
139
140     public String JavaDoc getDescription() {
141         return description;
142     }
143
144     public void setDescription(String JavaDoc description) {
145         this.description = description;
146     }
147
148     public boolean usesTypeResolution() {
149         for (Iterator JavaDoc i = rules.iterator(); i.hasNext();) {
150             Rule r = (Rule) i.next();
151             if (r.usesTypeResolution()) {
152                 return true;
153             }
154         }
155         return false;
156     }
157
158 }
159
Popular Tags