private DataSetBuilder getTrendReportData( final StaplerRequest request, String performanceReportNameFile) { DataSetBuilder<String, NumberOnlyBuildLabel> dataSet = new DataSetBuilder<String, NumberOnlyBuildLabel>(); List<?> builds = getProject().getBuilds(); List<Integer> buildsLimits = getFirstAndLastBuild(request, builds); int nbBuildsToAnalyze = builds.size(); for (Iterator<?> iterator = builds.iterator(); iterator.hasNext(); ) { AbstractBuild<?, ?> currentBuild = (AbstractBuild<?, ?>) iterator.next(); if (nbBuildsToAnalyze <= buildsLimits.get(1) && buildsLimits.get(0) <= nbBuildsToAnalyze) { NumberOnlyBuildLabel label = new NumberOnlyBuildLabel(currentBuild); PerformanceBuildAction performanceBuildAction = currentBuild.getAction(PerformanceBuildAction.class); if (performanceBuildAction == null) { continue; } PerformanceReport report = null; report = performanceBuildAction .getPerformanceReportMap() .getPerformanceReport(performanceReportNameFile); if (report == null) { nbBuildsToAnalyze--; continue; } dataSet.add(Math.round(report.getAverage()), Messages.ProjectAction_Average(), label); dataSet.add(Math.round(report.getMedian()), Messages.ProjectAction_Median(), label); dataSet.add(Math.round(report.get90Line()), Messages.ProjectAction_Line90(), label); dataSet.add(Math.round(report.getMin()), Messages.ProjectAction_Minimum(), label); dataSet.add(Math.round(report.getMax()), Messages.ProjectAction_Maximum(), label); dataSet.add( Math.round(report.errorPercent()), Messages.ProjectAction_PercentageOfErrors(), label); dataSet.add(Math.round(report.countErrors()), Messages.ProjectAction_Errors(), label); } nbBuildsToAnalyze--; } return dataSet; }