From f2c0537c45746e69bfbc3d004271cc7ec53d2943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sat, 26 Sep 2009 11:11:47 +0200 Subject: [PATCH] ItEr27S07CUVistaRecursosTempoPorProxectoItEr26S08: Adding method to calculate the total workHours between two dates. --- .../business/resources/entities/Resource.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java index b9e0dc353..8d9e17f8e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Resource.java @@ -13,8 +13,11 @@ import java.util.Map; import java.util.Set; import org.apache.commons.lang.Validate; +import org.joda.time.Days; import org.joda.time.LocalDate; +import org.navalplanner.business.calendars.entities.IWorkHours; import org.navalplanner.business.calendars.entities.ResourceCalendar; +import org.navalplanner.business.calendars.entities.SameWorkHoursEveryDay; import org.navalplanner.business.common.BaseEntity; import org.navalplanner.business.planner.entities.DayAssignment; @@ -492,4 +495,25 @@ public abstract class Resource extends BaseEntity{ return new ArrayList(dayAssignments); } + public int getTotalWorkHours(LocalDate start, LocalDate end) { + IWorkHours calendar = getCalendar() != null ? getCalendar() + : SameWorkHoursEveryDay + .getDefaultWorkingDay(); + return getTotalWorkHoursFor(calendar, start, end); + } + + private int getTotalWorkHoursFor(IWorkHours calendar, LocalDate start, + LocalDate end) { + int sum = 0; + final int days = Days.daysBetween(start, end).getDays(); + for (int i = 0; i < days; i++) { + LocalDate current = start.plusDays(i); + Integer workableHours = calendar.getWorkableHours(current); + if (workableHours != null) { + sum += workableHours; + } + } + return sum; + } + }