package org.jvnet.hudson.plugins.purecoverage.domain;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import org.jvnet.hudson.plugins.purecoverage.util.UrlTransformer;
public class LineCoverageBase {
private final String coverageElement;
private LineCoverage lineCoverage;
private final Map<String, LineCoverageMetric> childrenMap = new LinkedHashMap<String, LineCoverageMetric>();
public LineCoverageBase(String coverageElement, int coveredLines, int totalLines) {
this(coverageElement, new LineCoverage(coveredLines, totalLines));
}
public LineCoverageBase(String coverageElement, LineCoverage lineCoverage) {
this.coverageElement = coverageElement;
this.lineCoverage = lineCoverage;
}
public LineCoverageMetric getChild(String childName) {
LineCoverageMetric coverage = childrenMap.get(childName);
if (coverage == null) {
throw new RuntimeException("Could not look up coverage for key: " + childName
+ "\nAll keys: " + childrenMap.keySet());
}
return coverage;
}
public Collection<LineCoverageMetric> getChildren() {
return childrenMap.values();
}
public void addChild(LineCoverageMetric child) {
this.childrenMap.put(child.getUrlName(), child);
}
public LineCoverage getLineCoverage() {
return lineCoverage;
}
public String getMetricName() {
return coverageElement;
}
public String getUrlName() {
return new UrlTransformer().toUniqueUrl(coverageElement);
}
public String toString() {
return coverageElement + ": " + lineCoverage;
}
}