From 79425a183f0eb08896c2c64f68bfebd3a9499ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Thu, 7 Oct 2010 13:09:25 +0200 Subject: [PATCH] Reimplemented getHoursAdvancePercentage() to avoid calling OrderElementDAO.getHoursAdvancePercentage(). The DAO method makes recursive calls over all the children of the order. The reimplementation uses the pre-calculated data on the TaskElement to prevent recursive calls. FEA: ItEr61S03RFPerformanceCompanyView --- .../web/planner/TaskElementAdapter.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java index 0cee4b23e..128b3551c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java @@ -337,11 +337,21 @@ public class TaskElementAdapter implements ITaskElementAdapter { @Override public BigDecimal getHoursAdvancePercentage() { OrderElement orderElement = taskElement.getOrderElement(); - if (orderElement != null) { - return orderElementDAO.getHoursAdvancePercentage(orderElement); - } else { - return new BigDecimal(0); + if (orderElement == null) { + return BigDecimal.ZERO; } + + Integer totalChargedHours = orderElement.getSumChargedHours() != null ? orderElement + .getSumChargedHours().getTotalChargedHours() : new Integer(0); + BigDecimal assignedHours = new BigDecimal(totalChargedHours).setScale(2); + + BigDecimal estimatedHours = new BigDecimal(taskElement.getSumOfHoursAllocated()) + .setScale(2); + + if (estimatedHours.compareTo(BigDecimal.ZERO) <= 0) { + return BigDecimal.ZERO; + } + return assignedHours.divide(estimatedHours, RoundingMode.DOWN); } @Override