From 568cb354b6418e44d2562a6dc2cba92a8e5ef671 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 26 Aug 2011 09:33:17 +0200 Subject: [PATCH] If a task has manual allocation and is moved then reset to flat * Add function isManual in AssignmentFunction * Modified AssignmentFunction::applyAssignmentFunctionsIfAny in order to reset to flat if manual allocation was applied FEA: ItEr75S23FixAllocationModel --- .../planner/entities/AssignmentFunction.java | 13 ++++++++++++- .../business/planner/entities/FlatFunction.java | 5 +++++ .../business/planner/entities/ManualFunction.java | 5 +++++ .../planner/entities/ResourceAllocation.java | 2 +- .../business/planner/entities/SigmoidFunction.java | 5 +++++ .../planner/entities/StretchesFunction.java | 5 +++++ 6 files changed, 33 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/AssignmentFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/AssignmentFunction.java index a82f63cd3..9fabcafad 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/AssignmentFunction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/AssignmentFunction.java @@ -38,6 +38,10 @@ public abstract class AssignmentFunction extends BaseEntity { * This method goes over the {@link ResourceAllocation} list and apply the * assignment function if it is defined. * + * As this is called at the end of {@link Task#doAllocation} and a flat + * allocation was already applied before. If assignment function was set to + * manual it is reseted to flat again. + * * @param resourceAllocations * List of {@link ResourceAllocation} */ @@ -47,7 +51,12 @@ public abstract class AssignmentFunction extends BaseEntity { AssignmentFunction assignmentFunction = resourceAllocation .getAssignmentFunction(); if (assignmentFunction != null) { - assignmentFunction.applyTo(resourceAllocation); + if (assignmentFunction.isManual()) { + // reset to flat + resourceAllocation.setWithoutApply(null); + } else { + assignmentFunction.applyTo(resourceAllocation); + } } } } @@ -61,6 +70,8 @@ public abstract class AssignmentFunction extends BaseEntity { public abstract String getName(); + public abstract boolean isManual(); + public enum AssignmentFunctionName { FLAT(_("Flat")), MANUAL(_("Manual")), diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java index 688cdc456..73f958bed 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java @@ -63,4 +63,9 @@ public class FlatFunction extends AssignmentFunction { .untilAllocating(EffortDuration.hours(hours)); } + @Override + public boolean isManual() { + return false; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ManualFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ManualFunction.java index bc94d78db..bb3ea8c08 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ManualFunction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ManualFunction.java @@ -41,4 +41,9 @@ public class ManualFunction extends AssignmentFunction { // Do nothing } + @Override + public boolean isManual() { + return true; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index 8b0a21553..ace2a9668 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -1429,7 +1429,7 @@ public abstract class ResourceAllocation extends this.assignmentFunction.applyTo(this); } - private void setWithoutApply(AssignmentFunction assignmentFunction) { + protected void setWithoutApply(AssignmentFunction assignmentFunction) { this.assignmentFunction = assignmentFunction; } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SigmoidFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SigmoidFunction.java index 81cb44545..98cfa2b40 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SigmoidFunction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SigmoidFunction.java @@ -266,4 +266,9 @@ public class SigmoidFunction extends AssignmentFunction { PRECISSION, ROUND_MODE); } + @Override + public boolean isManual() { + return false; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/StretchesFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/StretchesFunction.java index eebe330fb..04bcf80aa 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/StretchesFunction.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/StretchesFunction.java @@ -476,4 +476,9 @@ public class StretchesFunction extends AssignmentFunction { } } + @Override + public boolean isManual() { + return false; + } + }