package hudson.plugins.violations.hudson.maven; import java.util.ArrayList; import java.util.List; import java.util.Map; import hudson.model.HealthReport; import hudson.maven.MavenModuleSetBuild; import hudson.maven.MavenBuild; import hudson.plugins.violations.model.BuildModel; import hudson.plugins.violations.ViolationsBuildAction; import hudson.plugins.violations.ViolationsReport; public class ViolationsAggregatedReport extends ViolationsReport { private List<ViolationsModuleReport> reports; private MavenModuleSetBuild mavenBuild; private HealthReport healthReport = null; public ViolationsAggregatedReport(MavenModuleSetBuild build) { setBuild(build); this.mavenBuild = build; this.reports = new ArrayList<ViolationsModuleReport>(); init(); } @Override public HealthReport getBuildHealth() { return healthReport; } @Override public BuildModel getModel() { return null; } public ViolationsReport getReportForMavenBuild(MavenBuild b) { for (ViolationsModuleReport moduleReport: reports) { if (moduleReport.getBuild().equals(b)) { return moduleReport.getReport(); } } return null; } private void init() { for (MavenBuild b: mavenBuild.getModuleLastBuilds().values()) { ViolationsBuildAction a = b.getAction(ViolationsBuildAction.class); if (a == null || a.getReport() == null) { continue; } ViolationsModuleReport r = new ViolationsModuleReport( b, a.getReport()); reports.add(r); HealthReport x = a.getReport().getBuildHealth(); HealthReport aReport = null; if (x != null) { aReport = new HealthReport( x.getScore(), Messages._ViolationsAggregatedReport_HealthDescription( x.getDescription(), r.getDisplayName())); } if (aReport != null) { healthReport = HealthReport.min(healthReport, aReport); } setConfig(a.getReport().getConfig()); Map<String, Integer> aggregatedViolations = getViolations(); for (Map.Entry<String, Integer> e: a.getReport().getViolations().entrySet()) { int val = e.getValue(); Integer current = aggregatedViolations.get(e.getKey()); if (current == null) { aggregatedViolations.put(e.getKey(), e.getValue()); } else { aggregatedViolations.put(e.getKey(), val + current); } } } } }