package hudson.plugins.javancss; import hudson.maven.*; import hudson.model.Action; import hudson.model.HealthReport; import hudson.plugins.javancss.parser.Statistic; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; /** * TODO javadoc. * * @author Stephen Connolly * @since 08-Jan-2008 21:12:12 */ public class JavaNCSSBuildAggregatedReport extends AbstractBuildReport<MavenModuleSetBuild> implements MavenAggregatedReport { private HealthReport buildHealth = null; public JavaNCSSBuildAggregatedReport(MavenModuleSetBuild build, Map<MavenModule, List<MavenBuild>> moduleBuilds) { super(new ArrayList<Statistic>()); setBuild(build); } private synchronized void calculateTotals(Map<MavenModule, List<MavenBuild>> moduleBuilds) { getResults().clear(); getTotals().set(Statistic.total(getResults())); for (Map.Entry<MavenModule, List<MavenBuild>> childList : moduleBuilds.entrySet()) { MavenBuild child = childList.getValue().iterator().next(); if (child != null) { update(moduleBuilds, child); } } } /** * {@inheritDoc} */ public synchronized void update(Map<MavenModule, List<MavenBuild>> moduleBuilds, MavenBuild newBuild) { JavaNCSSBuildIndividualReport report = newBuild.getAction(JavaNCSSBuildIndividualReport.class); if (report != null) { Collection<Statistic> u = Statistic.merge(report.getResults(), getResults()); getResults().clear(); getResults().addAll(u); getTotals().add(report.getTotals()); buildHealth = HealthReport.min(buildHealth, report.getBuildHealth()); } } /** * {@inheritDoc} */ public Class<? extends AggregatableAction> getIndividualActionType() { return JavaNCSSBuildIndividualReport.class; } /** * {@inheritDoc} */ public Action getProjectAction(MavenModuleSet moduleSet) { for (MavenModuleSetBuild build : moduleSet.getBuilds()) { if (build.getAction(JavaNCSSBuildAggregatedReport.class) != null) { return new JavaNCSSProjectAggregatedReport(moduleSet); } } return null; } /** * {@inheritDoc} */ public HealthReport getBuildHealth() { return buildHealth; } }