diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/Task.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/Task.java index 42714e6be..41062be90 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/Task.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/Task.java @@ -1138,17 +1138,6 @@ public class Task extends TaskElement implements ITaskPositionConstrained { } } - public TaskDeadlineViolationStatusEnum getDeadlineViolationStatus() { - LocalDate deadline = this.getDeadline(); - if (deadline == null) { - return TaskDeadlineViolationStatusEnum.NO_DEADLINE; - } else if (this.getEndAsLocalDate().isAfter(deadline)) { - return TaskDeadlineViolationStatusEnum.DEADLINE_VIOLATED; - } else { - return TaskDeadlineViolationStatusEnum.ON_SCHEDULE; - } - } - @Override /* If the status of the task was needed in the past was because * a TaskGroup needed to calculate children status, but only asked diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java index 23262c025..21ed10910 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java @@ -772,4 +772,15 @@ public abstract class TaskElement extends BaseEntity { public abstract boolean isAnyTaskWithConstraint(PositionConstraintType type); + public TaskDeadlineViolationStatusEnum getDeadlineViolationStatus() { + LocalDate deadline = this.getDeadline(); + if (deadline == null) { + return TaskDeadlineViolationStatusEnum.NO_DEADLINE; + } else if (this.getEndAsLocalDate().isAfter(deadline)) { + return TaskDeadlineViolationStatusEnum.DEADLINE_VIOLATED; + } else { + return TaskDeadlineViolationStatusEnum.ON_SCHEDULE; + } + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/visitors/AccumulateTasksDeadlineStatusVisitor.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/visitors/AccumulateTasksDeadlineStatusVisitor.java index 008002ee0..16a2e7e55 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/visitors/AccumulateTasksDeadlineStatusVisitor.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/visitors/AccumulateTasksDeadlineStatusVisitor.java @@ -1,7 +1,7 @@ /* * This file is part of LibrePlan * - * Copyright (C) 2011 Igalia, S.L. + * Copyright (C) 2011-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -24,6 +24,7 @@ package org.libreplan.business.planner.entities.visitors; * filling in a Map summarizing the status of all tasks. * * @author Nacho Barrientos + * @author Manuel Rego Casasnovas */ import java.util.EnumMap; import java.util.Map; @@ -32,6 +33,7 @@ import org.libreplan.business.planner.entities.Task; import org.libreplan.business.planner.entities.TaskDeadlineViolationStatusEnum; import org.libreplan.business.planner.entities.TaskElement; import org.libreplan.business.planner.entities.TaskGroup; +import org.libreplan.business.planner.entities.TaskMilestone; import org.libreplan.business.util.TaskElementVisitor; public class AccumulateTasksDeadlineStatusVisitor extends TaskElementVisitor { @@ -52,15 +54,25 @@ public class AccumulateTasksDeadlineStatusVisitor extends TaskElementVisitor { } public void visit(Task task) { - TaskDeadlineViolationStatusEnum status = task.getDeadlineViolationStatus(); - Integer currentValue = taskDeadlineViolationStatusData.get(status); - taskDeadlineViolationStatusData.put(status, Integer.valueOf(currentValue.intValue() + 1)); + calculateDeadlineViolationStatus(task); } public void visit(TaskGroup taskGroup) { + calculateDeadlineViolationStatus(taskGroup); for (TaskElement each: taskGroup.getChildren()) { each.acceptVisitor(this); } } + public void visit(TaskMilestone taskMilestone) { + calculateDeadlineViolationStatus(taskMilestone); + } + + private void calculateDeadlineViolationStatus(TaskElement taskElement) { + TaskDeadlineViolationStatusEnum status = taskElement + .getDeadlineViolationStatus(); + Integer currentValue = taskDeadlineViolationStatusData.get(status); + taskDeadlineViolationStatusData.put(status, currentValue + 1); + } + }