package net.sourceforge.pmd.eclipse.ui.actions;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import net.sourceforge.pmd.Rule;
import net.sourceforge.pmd.RuleSet;
/**
*
* @author Brian Remedios
*/
public class RuleSetUtil {
private RuleSetUtil() {}
public static RuleSet newCopyOf(RuleSet original) {
RuleSet rs = new RuleSet();
rs.setName(original.getName());
rs.setDescription(original.getDescription());
rs.setFileName(original.getFileName());
rs.setExcludePatterns(original.getExcludePatterns());
rs.setIncludePatterns(original.getIncludePatterns());
rs.addRuleSet(original);
return rs;
}
/**
* This should not really work but the ruleset hands out its
* internal container....oops! :)
*
* @param ruleSet
* @param wantedRuleNames
*/
public static void retainOnly(RuleSet ruleSet, Set<String> wantedRuleNames) {
Collection<Rule> rules = ruleSet.getRules();
Collection<Rule> ruleCopy = new ArrayList<Rule>(rules.size());
ruleCopy.addAll(rules);
for (Rule rule : ruleCopy) {
if (!wantedRuleNames.contains(rule.getName())) {
rules.remove(rule);
}
}
}
public static void remove(RuleSet ruleSet, Set<String> unwantedRuleNames) {
Collection<Rule> rules = ruleSet.getRules();
Collection<Rule> ruleCopy = new ArrayList<Rule>(rules.size());
ruleCopy.addAll(rules);
for (Rule rule : ruleCopy) {
if (unwantedRuleNames.contains(rule.getName())) {
rules.remove(rule);
}
}
}
}