From 6af82b4c54f1f34e5a310ee2a1e603e444d04501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Fri, 9 Mar 2012 13:54:07 +0100 Subject: [PATCH] Bug #1387: Reset the TaskSource when an OrderGroup changes to scheduling point. FEA: ItEr76S04BugFixing --- .../business/orders/entities/OrderElement.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java index 7936462d4..c028a683d 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java @@ -57,6 +57,7 @@ import org.libreplan.business.orders.entities.SchedulingState.Type; import org.libreplan.business.orders.entities.TaskSource.TaskSourceSynchronization; import org.libreplan.business.planner.entities.Task; import org.libreplan.business.planner.entities.TaskElement; +import org.libreplan.business.planner.entities.TaskGroup; import org.libreplan.business.planner.entities.TaskPositionConstraint; import org.libreplan.business.qualityforms.entities.QualityForm; import org.libreplan.business.qualityforms.entities.TaskQualityForm; @@ -290,6 +291,11 @@ public abstract class OrderElement extends IntegrationEntity implements SchedulingDataForVersion schedulingDataForVersion) { List result = new ArrayList(); if (isSchedulingPoint()) { + if(isSchedulingPointButItWasNot()) { + //this element was a container but now it's a scheduling point + //we have to remove the TaskSource which contains a TaskGroup instead of TaskElement + removeTaskSource(result); + } result .addAll(synchronizationForSchedulingPoint(schedulingDataForVersion)); } else if (isSuperElementPartialOrCompletelyScheduled()) { @@ -323,6 +329,11 @@ public abstract class OrderElement extends IntegrationEntity implements && getTaskSource().getTask() instanceof Task; } + private boolean isSchedulingPointButItWasNot() { + return getTaskSource() != null + && getTaskSource().getTask() instanceof TaskGroup; + } + private List childrenSynchronizations() { List childrenOfGroup = new ArrayList(); for (OrderElement orderElement : getSomewhatScheduledOrderElements()) {