package hudson.plugins.testng; import hudson.maven.AggregatableAction; import hudson.maven.MavenAggregatedReport; import hudson.maven.MavenBuild; import hudson.maven.MavenModule; import hudson.maven.MavenModuleSet; import hudson.maven.MavenModuleSetBuild; import hudson.model.Action; import hudson.model.HealthReport; import hudson.plugins.testng.results.TestResults; import java.util.ArrayList; import java.util.List; import java.util.Map; public class BuildAggregatedReport extends AbstractBuildReport<MavenModuleSetBuild> implements MavenAggregatedReport { private HealthReport buildHealth = null; public BuildAggregatedReport(MavenModuleSetBuild build, Map<MavenModule, List<MavenBuild>> moduleBuilds) { super(new ArrayList<TestResults>()); setBuild(build); } /** * {@inheritDoc} */ public synchronized void update(Map<MavenModule, List<MavenBuild>> moduleBuilds, MavenBuild newBuild) { BuildIndividualReport report = newBuild.getAction(BuildIndividualReport.class); if (report != null) { getResults().add(report.getResults()); buildHealth = HealthReport.min(buildHealth, report.getBuildHealth()); } } /** * {@inheritDoc} */ public Class<? extends AggregatableAction> getIndividualActionType() { return BuildIndividualReport.class; } /** * {@inheritDoc} */ public Action getProjectAction(MavenModuleSet moduleSet) { for (MavenModuleSetBuild build : moduleSet.getBuilds()) { if (build.getAction(BuildAggregatedReport.class) != null) { return new ProjectAggregatedReport(moduleSet); } } return null; } /** * {@inheritDoc} */ public HealthReport getBuildHealth() { return buildHealth; } }