package net.sourceforge.pmd.eclipse.ui.preferences.br;
import java.util.Iterator;
import java.util.Set;
import net.sourceforge.pmd.Rule;
/**
*
* @author Brian Remedios
*/
public class BasicRuleFieldAccessor implements RuleFieldAccessor {
public BasicRuleFieldAccessor() {
}
public String labelFor(Rule rule) {
Comparable<?> value = valueFor(rule);
return value == null ? "" : value.toString();
}
public Comparable<?> valueFor(Rule rule) {
throw new RuntimeException("unimplemented method");
}
public Comparable<?> valueFor(RuleCollection collection) {
Comparable<?> aspect = RuleUtil.commonAspect(collection, this);
if (aspect != null) return aspect;
return asString( RuleUtil.uniqueAspects(collection, this) );
}
public Set<Comparable<?>> uniqueValuesFor(RuleCollection collection) {
return RuleUtil.uniqueAspects(collection, this);
}
protected String format(Object item) {
return item == null ? "" : String.valueOf(item);
}
protected String asString(Set<Comparable<?>> items) {
Iterator<Comparable<?>> iter = items.iterator();
if (items.size() == 1) return format(iter.next());
StringBuilder sb = new StringBuilder(format(iter.next()));
while (iter.hasNext()) {
sb.append(", ").append(format(iter.next()));
}
return sb.toString();
}
}