Set tasks as START_IN_FIXED_DATE when manual allocation is applied

FEA: ItEr75S23FixAllocationModel
This commit is contained in:
Manuel Rego Casasnovas 2011-10-08 09:03:12 +02:00
parent 5ea9505610
commit 7d1b96db5c
5 changed files with 32 additions and 12 deletions

View file

@ -2179,4 +2179,11 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
: null;
}
public boolean isManualAssignmentFunction() {
if (assignmentFunction != null) {
return assignmentFunction.isManual();
}
return false;
}
}

View file

@ -1021,4 +1021,22 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
return !calendar.getCapacityOn(PartialDay.wholeDay(day)).isZero();
}
public static void convertOnStartInFixedDate(Task task) {
TaskPositionConstraint taskConstraint = task.getPositionConstraint();
if (taskConstraint.isValid(PositionConstraintType.START_IN_FIXED_DATE,
task.getIntraDayStartDate())) {
taskConstraint.update(PositionConstraintType.START_IN_FIXED_DATE,
task.getIntraDayStartDate());
}
}
public boolean isManualAnyAllocation() {
for (ResourceAllocation<?> each : resourceAllocations) {
if (each.isManualAssignmentFunction()) {
return true;
}
}
return false;
}
}

View file

@ -28,10 +28,8 @@ import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
import org.navalplanner.business.planner.daos.ISubcontractedTaskDataDAO;
import org.navalplanner.business.planner.entities.PositionConstraintType;
import org.navalplanner.business.planner.entities.SubcontractedTaskData;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskPositionConstraint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -109,22 +107,13 @@ public class SubcontractModel implements ISubcontractModel {
}
task.removeAllSatisfiedResourceAllocations();
convertOnStartOnFixedDate(task);
Task.convertOnStartInFixedDate(task);
}
recalculateTaskLength();
}
}
private void convertOnStartOnFixedDate(Task task) {
TaskPositionConstraint taskConstraint = task.getPositionConstraint();
if (taskConstraint.isValid(PositionConstraintType.START_IN_FIXED_DATE,
task.getIntraDayStartDate())) {
taskConstraint.update(PositionConstraintType.START_IN_FIXED_DATE,
task.getIntraDayStartDate());
}
}
private void recalculateTaskLength() {
GanttDate previousStartDate = ganttTask.getBeginDate();
GanttDate previousEnd = ganttTask.getEndDate();

View file

@ -136,6 +136,9 @@ public class AdvancedAllocationTabCreator {
Validate
.isTrue(allocationResult.getAggregate() == modifiedAllocations);
allocationResult.applyTo(planningState.getCurrentScenario(), task);
if (task.isManualAnyAllocation()) {
Task.convertOnStartInFixedDate(task);
}
updateParentsPositions(task);
}

View file

@ -143,6 +143,9 @@ public class AdvancedAllocationTaskController extends GenericForwardComposer {
@Override
public void accepted(AggregateOfResourceAllocations aggregate) {
allocation.applyTo(planningState.getCurrentScenario(), task);
if (task.isManualAnyAllocation()) {
Task.convertOnStartInFixedDate(task);
}
askForReloads();
}