Use getWorkableDays instead of getDaysDuration

if the field workableDays is not defined it falls back to
getDaysDuration.

FEA: ItEr61OTS04PlanificacionHaciaAtras
This commit is contained in:
Óscar González Fernández 2010-11-09 11:26:30 +01:00
parent 4aaf896d73
commit 2aa82bf9cf
5 changed files with 40 additions and 15 deletions

View file

@ -269,13 +269,6 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
this.calculatedValue = calculatedValue;
}
public Integer getDaysDuration() {
Days daysBetween = Days.daysBetween(new LocalDate(
toDateTime(getStartDate())), new LocalDate(
toDateTime(getEndDate())));
return daysBetween.getDays();
}
private DateTime toDateTime(Date startDate) {
return new DateTime(startDate.getTime());
}
@ -688,7 +681,16 @@ public class Task extends TaskElement implements ITaskLeafConstraint {
}
public Integer getWorkableDays() {
if (workableDays == null) {
return getDaysBetweenDates();
}
return workableDays;
}
public Integer getDaysBetweenDates() {
Days daysBetween = Days.daysBetween(getStartAsLocalDate(),
getIntraDayEndDate().asExclusiveEnd());
return daysBetween.getDays();
}
}

View file

@ -34,7 +34,7 @@ import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING
import java.util.Arrays;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.navalplanner.business.orders.entities.HoursGroup;
@ -47,6 +47,8 @@ import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
import org.navalplanner.business.scenarios.entities.OrderVersion;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.IntraDayDate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
@ -172,9 +174,31 @@ public class TaskTest {
@Test
public void theDaysBetweenIsCalculatedBasedOnlyOnDatesNotHours() {
task.setStartDate(new DateTime(2008, 10, 5, 23, 0, 0, 0).toDate());
task.setEndDate(new DateTime(2008, 10, 6, 1, 0, 0, 0).toDate());
assertThat(task.getDaysDuration(), equalTo(1));
task.setIntraDayStartDate(IntraDayDate.create(
new LocalDate(2010, 1, 13), EffortDuration.hours(3)));
task.setIntraDayEndDate(IntraDayDate.startOfDay(new LocalDate(2010, 1,
14)));
assertThat(task.getWorkableDays(), equalTo(1));
}
@Test
public void atLeastOneWorkableDayEvenIfStartAndEndDatesAreAtTheSameDay() {
LocalDate day = new LocalDate(2010, 1, 13);
task.setIntraDayStartDate(IntraDayDate.create(day,
EffortDuration.hours(3)));
task.setIntraDayEndDate(IntraDayDate.create(day,
EffortDuration.hours(4)));
assertThat(task.getWorkableDays(), equalTo(1));
}
@Test
public void ifTheEndIsInTheMiddleOfADayTheWholeDayIsCounted() {
LocalDate start = new LocalDate(2010, 1, 13);
task.setIntraDayStartDate(IntraDayDate.create(start,
EffortDuration.hours(3)));
task.setIntraDayEndDate(IntraDayDate.create(start.plusDays(1),
EffortDuration.minutes(1)));
assertThat(task.getWorkableDays(), equalTo(2));
}
/**

View file

@ -67,7 +67,7 @@ public class MonteCarloTask {
private MonteCarloTask(Task task) {
this.task = task;
duration = BigDecimal.valueOf(task.getDaysDuration());
duration = BigDecimal.valueOf(task.getDaysBetweenDates());
pessimisticDuration = duration.multiply(BigDecimal.valueOf(1.50));
pessimisticDurationPercentage = 30;
normalDuration = duration;

View file

@ -268,9 +268,8 @@ public class ResourceAllocationController extends GenericForwardComposer {
private Label lbTaskEnd;
private void initTaskWorkableDays(org.navalplanner.business.planner.entities.Task task) {
taskWorkableDays.setValue(task.getDaysDuration());
taskWorkableDays.setValue(task.getWorkableDays());
plannedTaskEnd = resourceAllocationModel.getTaskEnd();
taskWorkableDays.setValue(task.getDaysDuration());
taskWorkableDays.addEventListener(Events.ON_CHANGE,
new EventListener() {

View file

@ -327,7 +327,7 @@ public class TaskPropertiesController extends GenericForwardComposer {
private void showDurationRow(Task task) {
hours.getFellow("durationRow").setVisible(true);
duration.setValue(task.getDaysDuration());
duration.setValue(task.getWorkableDays());
}
@Override