Return an IntraDayDate instead of a LocalDate for getFirstDayNotConsolidated
Extracting method at ResourceAllocation to make the change easier. FEA: ItEr61S08TimeUnitConfigurablePlanning
This commit is contained in:
parent
e7d72efdb8
commit
e8dd2bc7b7
9 changed files with 45 additions and 38 deletions
|
|
@ -510,15 +510,10 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
|
||||
@Override
|
||||
public void allocate(ResourcesPerDay resourcesPerDay) {
|
||||
Task currentTask = getTask();
|
||||
LocalDate taskStart = LocalDate.fromDateFields(currentTask
|
||||
.getStartDate());
|
||||
LocalDate startInclusive = (currentTask
|
||||
.getFirstDayNotConsolidated().compareTo(taskStart) >= 0) ? currentTask
|
||||
.getFirstDayNotConsolidated()
|
||||
: taskStart;
|
||||
IntraDayDate startInclusive = getStartAfterConsolidated();
|
||||
List<T> assignmentsCreated = createAssignments(
|
||||
resourcesPerDay, startInclusive, endExclusive);
|
||||
resourcesPerDay, startInclusive.getDate(),
|
||||
endExclusive);
|
||||
resetAssignmentsTo(assignmentsCreated);
|
||||
updateResourcesPerDay();
|
||||
}
|
||||
|
|
@ -577,11 +572,9 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
}
|
||||
|
||||
private void allocate(LocalDate end, EffortDuration durationToAssign) {
|
||||
LocalDate taskStart = LocalDate.fromDateFields(task.getStartDate());
|
||||
LocalDate startInclusive = (task.getFirstDayNotConsolidated()
|
||||
.compareTo(taskStart) >= 0) ? task
|
||||
.getFirstDayNotConsolidated() : taskStart;
|
||||
List<T> assignmentsCreated = createAssignments(startInclusive, end,
|
||||
IntraDayDate startInclusive = getStartAfterConsolidated();
|
||||
List<T> assignmentsCreated = createAssignments(
|
||||
startInclusive.getDate(), end,
|
||||
durationToAssign);
|
||||
resetAssignmentsTo(assignmentsCreated);
|
||||
updateResourcesPerDay();
|
||||
|
|
@ -589,12 +582,15 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
|
||||
private void allocate(LocalDate startInclusive, LocalDate endExclusive,
|
||||
EffortDuration durationToAssign) {
|
||||
LocalDate firstDayNotConsolidated = getTask().getFirstDayNotConsolidated();
|
||||
LocalDate start = startInclusive.compareTo(firstDayNotConsolidated) >= 0 ? startInclusive
|
||||
: firstDayNotConsolidated;
|
||||
IntraDayDate firstDayNotConsolidated = getTask()
|
||||
.getFirstDayNotConsolidated();
|
||||
IntraDayDate start = IntraDayDate.max(
|
||||
IntraDayDate.startOfDay(startInclusive),
|
||||
firstDayNotConsolidated);
|
||||
List<T> assignmentsCreated = createAssignments(startInclusive,
|
||||
endExclusive, durationToAssign);
|
||||
resetAssigmentsForInterval(start, endExclusive, assignmentsCreated);
|
||||
resetAssigmentsForInterval(start.getDate(), endExclusive,
|
||||
assignmentsCreated);
|
||||
}
|
||||
|
||||
protected abstract AvailabilityTimeLine getResourcesAvailability();
|
||||
|
|
@ -1094,6 +1090,13 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
return start != null ? start.getDate() : null;
|
||||
}
|
||||
|
||||
public IntraDayDate getStartAfterConsolidated() {
|
||||
IntraDayDate taskStart = getIntraDayStartDate();
|
||||
IntraDayDate firstDayNotConsolidated = getTask()
|
||||
.getFirstDayNotConsolidated();
|
||||
return IntraDayDate.max(taskStart, firstDayNotConsolidated);
|
||||
}
|
||||
|
||||
public IntraDayDate getIntraDayStartDate() {
|
||||
return task.getIntraDayStartDate();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -652,14 +652,14 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
|
|||
return ((consolidation != null) && (!consolidation.isEmpty()));
|
||||
}
|
||||
|
||||
public LocalDate getFirstDayNotConsolidated() {
|
||||
public IntraDayDate getFirstDayNotConsolidated() {
|
||||
if (consolidation != null) {
|
||||
LocalDate until = consolidation.getConsolidatedUntil();
|
||||
if (until != null) {
|
||||
return until.plusDays(1);
|
||||
return IntraDayDate.startOfDay(until.plusDays(1));
|
||||
}
|
||||
}
|
||||
return LocalDate.fromDateFields(getStartDate());
|
||||
return getIntraDayStartDate();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,16 +62,14 @@ public abstract class AllocatorForSpecifiedResourcesPerDayAndHours {
|
|||
}
|
||||
|
||||
public IntraDayDate untilAllocating(EffortDuration effortToAllocate) {
|
||||
LocalDate taskStart = LocalDate.fromDateFields(task.getStartDate());
|
||||
LocalDate start = (task.getFirstDayNotConsolidated().compareTo(
|
||||
taskStart) >= 0) ? task.getFirstDayNotConsolidated()
|
||||
: taskStart;
|
||||
final IntraDayDate start = IntraDayDate.max(
|
||||
task.getFirstDayNotConsolidated(), task.getIntraDayStartDate());
|
||||
int i = 0;
|
||||
IntraDayDate currentEnd = IntraDayDate.create(start, zero());
|
||||
for (EffortPerAllocation each : effortPerAllocation(start,
|
||||
IntraDayDate currentEnd = start;
|
||||
for (EffortPerAllocation each : effortPerAllocation(start.getDate(),
|
||||
effortToAllocate)) {
|
||||
IntraDayDate endCandidate = untilAllocating(start, each.allocation,
|
||||
each.duration);
|
||||
IntraDayDate endCandidate = untilAllocating(start.getDate(),
|
||||
each.allocation, each.duration);
|
||||
currentEnd = IntraDayDate.max(currentEnd, endCandidate);
|
||||
i++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -271,17 +271,19 @@ public class AllocationUntilFillingHoursTest {
|
|||
}
|
||||
expect(task.getStartDate()).andReturn(
|
||||
startDate.toDateTimeAtStartOfDay().toDate()).anyTimes();
|
||||
expect(task.getIntraDayStartDate()).andReturn(
|
||||
IntraDayDate.startOfDay(startDate)).anyTimes();
|
||||
expect(task.getCriterions()).andReturn(
|
||||
Collections.<Criterion> emptySet()).anyTimes();
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(startDate)
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(
|
||||
IntraDayDate.startOfDay(startDate))
|
||||
.anyTimes();
|
||||
replay(task);
|
||||
}
|
||||
|
||||
private void givenAllocationsWithoutTask() {
|
||||
allocations.add(ResourcesPerDayModification.create(
|
||||
(SpecificResourceAllocation)
|
||||
createStubAllocationReturning(
|
||||
(SpecificResourceAllocation) createStubAllocationReturning(
|
||||
SpecificResourceAllocation.class, null),
|
||||
ResourcesPerDay.amount(2)));
|
||||
allocations.add(ResourcesPerDayModification.create(
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ import org.navalplanner.business.resources.entities.VirtualWorker;
|
|||
import org.navalplanner.business.resources.entities.Worker;
|
||||
import org.navalplanner.business.scenarios.entities.Scenario;
|
||||
import org.navalplanner.business.workingday.EffortDuration;
|
||||
import org.navalplanner.business.workingday.IntraDayDate;
|
||||
import org.navalplanner.business.workingday.ResourcesPerDay;
|
||||
|
||||
public class GenericResourceAllocationTest {
|
||||
|
|
@ -93,13 +94,15 @@ public class GenericResourceAllocationTest {
|
|||
private Task givenTaskWithStartAndEnd(Interval interval) {
|
||||
Task task = createNiceMock(Task.class);
|
||||
setupCriterions(task);
|
||||
|
||||
IntraDayDate start = IntraDayDate.startOfDay(interval.getStart()
|
||||
.toLocalDate());
|
||||
expect(task.getStartDate()).andReturn(interval.getStart().toDate())
|
||||
.anyTimes();
|
||||
expect(task.getIntraDayStartDate()).andReturn(start).anyTimes();
|
||||
expect(task.getEndDate()).andReturn(interval.getEnd().toDate())
|
||||
.anyTimes();
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(
|
||||
interval.getStart().toLocalDate()).anyTimes();
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(start)
|
||||
.anyTimes();
|
||||
expect(task.getCalendar()).andReturn(baseCalendar).anyTimes();
|
||||
replay(task);
|
||||
return this.task = task;
|
||||
|
|
|
|||
|
|
@ -193,7 +193,8 @@ public class SpecificResourceAllocationTest {
|
|||
IntraDayDate.startOfDay(start)).anyTimes();
|
||||
expect(task.getEndDate()).andReturn(
|
||||
end.toDateTimeAtStartOfDay().toDate()).anyTimes();
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(start).anyTimes();
|
||||
expect(task.getFirstDayNotConsolidated()).andReturn(
|
||||
IntraDayDate.startOfDay(start)).anyTimes();
|
||||
replay(task);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -653,7 +653,7 @@ public class TaskElementAdapter implements ITaskElementAdapter {
|
|||
return null;
|
||||
}
|
||||
LocalDate consolidatedline = ((Task) taskElement)
|
||||
.getFirstDayNotConsolidated();
|
||||
.getFirstDayNotConsolidated().getDate();
|
||||
return toGantt(consolidatedline);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1501,7 +1501,7 @@ class Row {
|
|||
if(!((Task)task).hasConsolidations()) {
|
||||
return false;
|
||||
}
|
||||
LocalDate d = ((Task)task).getFirstDayNotConsolidated();
|
||||
LocalDate d = ((Task) task).getFirstDayNotConsolidated().getDate();
|
||||
DateTime firstDayNotConsolidated =
|
||||
new DateTime(d.getYear(), d.getMonthOfYear(),
|
||||
d.getDayOfMonth(), 0, 0, 0, 0);
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
|
|||
}
|
||||
|
||||
LocalDate firstDayNotConsolidated = task
|
||||
.getFirstDayNotConsolidated();
|
||||
.getFirstDayNotConsolidated().getDate();
|
||||
for (DayAssignment dayAssignment : task.getDayAssignments()) {
|
||||
if (dayAssignment.getDay().compareTo(
|
||||
firstDayNotConsolidated) >= 0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue