package hudson.plugins.emma; import hudson.model.AbstractBuild; import hudson.model.ModelObject; import java.io.IOException; /** * Base class of the coverage report tree, * which maintains the details of the coverage report. * * @author Kohsuke Kawaguchi */ public abstract class AbstractReport< PARENT extends AggregatedReport<?,PARENT,?>, SELF extends CoverageObject<SELF>> extends CoverageObject<SELF> implements ModelObject { private String name; private PARENT parent; public void addCoverage(CoverageElement cv) throws IOException { cv.addTo(this); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDisplayName() { return name; } /** * Called at the last stage of the tree construction, * to set the back pointer. */ protected void setParent(PARENT p) { this.parent = p; } /** * Gets the back pointer to the parent coverage object. */ public PARENT getParent() { return parent; } @Override public SELF getPreviousResult() { PARENT p = parent; while(true) { p = p.getPreviousResult(); if(p==null) return null; SELF prev = (SELF)p.getChildren().get(name); if(prev!=null) return prev; } } @Override public AbstractBuild<?,?> getBuild() { return parent.getBuild(); } }