package hudson.plugins.coverage.model;
import hudson.plugins.coverage.model.measurements.BranchCoverage;
import hudson.plugins.coverage.model.measurements.LineCoverage;
/**
* The standard model for calculating project level results.
*
* @author Stephen Connolly
* @since 26-Jun-2008 23:57:28
*/
public final class StandardModel implements Model {
private StandardModel() {
}
public static StandardModel getInstance() {
return SingletonHolder.INSTANCE;
}
public void apply(Instance instance) {
int lineCount = 0;
int lineCover = 0;
int branchCount = 0;
int branchCover = 0;
for (Element element : instance.getChildElements()) {
for (Instance child : instance.getChildren(element).values()) {
LineCoverage lineCoverage = (LineCoverage) child.getMeasurement(Metric.LINE_COVERAGE);
if (lineCoverage != null) {
lineCount += lineCoverage.getCount();
lineCover += lineCoverage.getCover();
}
BranchCoverage branchCoverage = (BranchCoverage) child.getMeasurement(Metric.BRANCH_COVERAGE);
if (branchCoverage != null) {
branchCount += branchCoverage.getCount();
branchCover += branchCoverage.getCover();
}
}
}
instance.setMeasurement(Metric.LINE_COVERAGE, new LineCoverage(lineCount, lineCover));
instance.setMeasurement(Metric.BRANCH_COVERAGE, new BranchCoverage(branchCount, branchCover));
}
private static final class SingletonHolder {
private static final StandardModel INSTANCE = new StandardModel();
}
}