package net.sourceforge.pmd.eclipse.ui.preferences.br;
import net.sourceforge.pmd.RuleSet;
/**
* A value and label extractor interface for anything implementing the RuleSet interface
* and may be real fields or values held as properties.
*
* Value returned are typed as comparable to facilitate sorting. Never return null,
* return an empty string instead.
*
* @author Brian Remedios
*/
public interface RuleSetFieldAccessor {
RuleSetFieldAccessor name = new BasicRuleSetFieldAccessor() {
public Comparable<String> valueFor(RuleSet ruleSet) {
return ruleSet.getName();
}
};
RuleSetFieldAccessor fileName = new BasicRuleSetFieldAccessor() {
public Comparable<String> valueFor(RuleSet ruleSet) {
return ruleSet.getFileName();
}
};
RuleSetFieldAccessor description = new BasicRuleSetFieldAccessor() {
public Comparable<String> valueFor(RuleSet ruleSet) {
return ruleSet.getDescription();
}
};
RuleSetFieldAccessor size = new BasicRuleSetFieldAccessor() {
public Comparable<Integer> valueFor(RuleSet ruleSet) {
return ruleSet.size();
}
};
RuleSetFieldAccessor includePatternCount = new BasicRuleSetFieldAccessor() {
public Comparable<Integer> valueFor(RuleSet ruleSet) {
return ruleSet.getIncludePatterns().size();
}
};
RuleSetFieldAccessor excludePatternCount = new BasicRuleSetFieldAccessor() {
public Comparable<Integer> valueFor(RuleSet ruleSet) {
return ruleSet.getExcludePatterns().size();
}
};
Comparable<?> valueFor(RuleSet ruleSet);
// Comparable<?> valueFor(RuleSetCollection collection);
// Set<Comparable<?>> uniqueValuesFor(RuleSetCollection collection);
String labelFor(RuleSet ruleSet);
}