untilAllocating now returns a IntraDayDate

FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
Óscar González Fernández 2010-09-22 12:27:06 +02:00
parent 0159438d56
commit ab6417fcf6
5 changed files with 19 additions and 14 deletions

View file

@ -219,7 +219,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
}
public LocalDate untilAllocating(int hoursToAllocate) {
public IntraDayDate untilAllocating(int hoursToAllocate) {
AllocatorForSpecifiedResourcesPerDayAndHours allocator = new AllocatorForSpecifiedResourcesPerDayAndHours(
task, allocations) {
@ -266,9 +266,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
};
IntraDayDate result = allocator
.untilAllocating(hours(hoursToAllocate));
return result.getDate();
return allocator.untilAllocating(hours(hoursToAllocate));
}
public void allocateOnTaskLength() {

View file

@ -52,6 +52,7 @@ import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.navalplanner.business.util.deepcopy.AfterCopy;
import org.navalplanner.business.workingday.IntraDayDate;
/**
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -498,10 +499,10 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
.allocateOnTaskLength();
break;
case END_DATE:
LocalDate end = ResourceAllocation
IntraDayDate end = ResourceAllocation
.allocating(allocations)
.untilAllocating(getAssignedHours());
setEndDate(end.toDateTimeAtStartOfDay().toDate());
setIntraDayEndDate(end);
break;
case RESOURCES_PER_DAY:
List<HoursModification> hoursModified = strategy

View file

@ -25,7 +25,9 @@ import static org.easymock.classextension.EasyMock.createNiceMock;
import static org.easymock.classextension.EasyMock.replay;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.navalplanner.business.test.planner.entities.DayAssignmentMatchers.haveHours;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import java.math.BigDecimal;
import java.util.ArrayList;
@ -42,6 +44,7 @@ import org.navalplanner.business.planner.entities.allocationalgorithms.Resources
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.workingday.IntraDayDate;
import org.navalplanner.business.workingday.ResourcesPerDay;
public class AllocationUntilFillingHoursTest {
@ -75,17 +78,19 @@ public class AllocationUntilFillingHoursTest {
@Test
public void theEndDateIsTheDayAfterAllTheHoursAreAllocatedIfItIsCompletelyFilled() {
givenSpecificAllocations(ResourcesPerDay.amount(2));
LocalDate endDate = ResourceAllocation.allocating(allocations)
IntraDayDate endDate = ResourceAllocation.allocating(allocations)
.untilAllocating(32);
assertThat(endDate, equalTo(startDate.plusDays(2)));
assertThat(endDate.getDate(), equalTo(startDate.plusDays(2)));
assertTrue(endDate.isStartOfDay());
}
@Test
public void theEndDateIsTheSameDayIfItIsNotCompletelyFilled() {
givenSpecificAllocations(ResourcesPerDay.amount(2));
LocalDate endDate = ResourceAllocation.allocating(allocations)
IntraDayDate endDate = ResourceAllocation.allocating(allocations)
.untilAllocating(31);
assertThat(endDate, equalTo(startDate.plusDays(1)));
assertThat(endDate.getDate(), equalTo(startDate.plusDays(1)));
assertThat(endDate.getEffortDuration(), equalTo(hours(15)));
}
@Test

View file

@ -770,7 +770,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
for(TaskElement task : parentElementsToBeUpdated) {
TaskElement parent = task;
while(parent != null) {
parent.setEndDate(null);
parent.setIntraDayEndDate(null);
parent.initializeEndDateIfDoesntExist();
taskDAO.save(parent);
parent = parent.getParent();

View file

@ -39,16 +39,17 @@ import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.daos.ITaskElementDAO;
import org.navalplanner.business.planner.entities.DayAssignment;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.ResourceAllocation.DetachDayAssignmentOnRemoval;
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.ResourceAllocation.DetachDayAssignmentOnRemoval;
import org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidation;
import org.navalplanner.business.planner.entities.consolidations.ConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.Consolidation;
import org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidation;
import org.navalplanner.business.workingday.IntraDayDate;
import org.navalplanner.web.planner.order.PlanningState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
@ -240,11 +241,11 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
.setOnDayAssignmentRemoval(new DetachDayAssignmentOnRemoval());
if (value.getDate().compareTo(endExclusive.minusDays(1)) >= 0) {
LocalDate date = ResourceAllocation.allocating(
IntraDayDate date = ResourceAllocation.allocating(
Arrays.asList(resourceAllocation
.asResourcesPerDayModification()))
.untilAllocating(pendingHours);
task.setEndDate(date.toDateTimeAtStartOfDay().toDate());
task.setIntraDayEndDate(date);
} else {
reassign(resourceAllocation, startInclusive, endExclusive,
pendingHours);