package hudson.plugins.cobertura.targets;
import java.io.Serializable;
/**
* Describes how {@link CoveragePaint} can be aggregated up a {@link CoverageResult} tree.
*
* @author Stephen Connolly
* @since 29-Aug-2007 18:13:22
*/
public class CoveragePaintRule implements Serializable {
private static final long serialVersionUID = 1039455096344866574L;
private final CoverageElement element;
private final CoverageAggregationMode mode;
public CoveragePaintRule(CoverageElement element, CoverageAggregationMode mode) {
this.element = element;
this.mode = mode;
}
private static final CoveragePaintRule[] INITIAL_RULESET = {
new CoveragePaintRule(CoverageElement.JAVA_METHOD, CoverageAggregationMode.NONE),
new CoveragePaintRule(CoverageElement.JAVA_CLASS, CoverageAggregationMode.SUM),
};
public static CoveragePaint makePaint(CoverageElement element) {
for (CoveragePaintRule rule : INITIAL_RULESET) {
if (element==rule.element
|| (element==rule.element.getParent() && CoverageAggregationMode.NONE!=rule.mode)) {
return new CoveragePaint(element);
}
}
return null;
}
public static boolean propagatePaintToParent(CoverageElement element) {
for (CoveragePaintRule rule : INITIAL_RULESET) {
if (element==rule.element) {
return CoverageAggregationMode.NONE!=rule.mode;
}
}
return false;
}
}