diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java index b44fb9a5e..f4e9484be 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java @@ -200,34 +200,42 @@ public class DashboardModel { rootTask.acceptVisitor(visitor); List deviations = visitor.getDeviations(); - int lowBound = EA_STRETCHES_MIN_VALUE; - int highBound = EA_STRETCHES_MAX_VALUE; - int variableRange = highBound - lowBound; - int numberOfClasses = variableRange/EA_STRETCHES_PERCENTAGE_STEP; // [-100, -90), [-90, -80), ..., [190, 200), [200, inf) + this.taskEstimationAccuracyHistogram = createHistogram( + EA_STRETCHES_MIN_VALUE, + EA_STRETCHES_MAX_VALUE, + EA_STRETCHES_PERCENTAGE_STEP, + deviations); + } + + private List createHistogram(int lowBound, int highBound, + int intervalStep, List values) { + int variableRange = highBound - lowBound; + int numberOfClasses = variableRange/intervalStep; int[] classes = new int[numberOfClasses+1]; - for(Double deviation: deviations) { + for(Double value: values) { int index; - if (deviation >= highBound) { + if (value >= highBound) { index = numberOfClasses; } else { index = (int)(numberOfClasses * - (((deviation.doubleValue() - lowBound))/variableRange)); + (((value.doubleValue() - lowBound))/variableRange)); } classes[index]++; } - this.taskEstimationAccuracyHistogram = new ArrayList(); - int numberOfConsideredTasks = visitor.getNumberOfConsideredTasks(); - for(int numberOfElementsInClass: classes) { + List histogram = new ArrayList(); + int numberOfConsideredTasks = values.size(); + for (int numberOfElementsInClass: classes) { Double relativeCount = new Double(0.0); if (numberOfConsideredTasks > 0) { relativeCount = new Double(1.0*numberOfElementsInClass/ numberOfConsideredTasks); } - this.taskEstimationAccuracyHistogram.add(relativeCount); + histogram.add(relativeCount); } + return histogram; } private void calculateTaskStatusStatistics() {