Calculate total assigned hours instead of relaying on getSumOfHoursAllocated.

FEA: ItEr75S27PerProjectDashboard
This commit is contained in:
Nacho Barrientos 2011-11-02 17:18:29 +01:00 committed by Manuel Rego Casasnovas
parent abcf0d5e83
commit 2b3fb8c573
4 changed files with 12 additions and 10 deletions

View file

@ -46,18 +46,17 @@ public class AggregateOfDayAssignments {
Date start,
Date end) {
Collections.sort(assignments, new Comparator<DayAssignment>() {
@Override
public int compare(DayAssignment arg0, DayAssignment arg1) {
return arg0.getDay().compareTo(arg1.getDay());
}
});
assignments = DayAssignment.orderedByDay(assignments);
return new AggregateOfDayAssignments(
DayAssignment.getAtInterval(assignments,
new LocalDate(start), new LocalDate(end)));
}
public static AggregateOfDayAssignments create(List<DayAssignment> assignments) {
return new AggregateOfDayAssignments(assignments);
}
private Set<DayAssignment> dayAssignments;
private AggregateOfDayAssignments(

View file

@ -163,7 +163,8 @@ public class PlanningData extends BaseEntity {
for (Task each: criticalPath) {
theoreticalNumHours += each.getTheoreticalCompletedHoursUntilDate(limit);
totalNumHours += each.getSumOfHoursAllocated();
totalNumHours += AggregateOfDayAssignments.create(
each.getDayAssignments()).getTotalHours();
}
return divide(new BigDecimal(theoreticalNumHours), totalNumHours);
}

View file

@ -704,7 +704,8 @@ public abstract class TaskElement extends BaseEntity {
public abstract Integer getTheoreticalCompletedHoursUntilDate(Date date);
public BigDecimal getTheoreticalAdvancePercentageUntilDate(Date date) {
int totalAllocatedHours = this.getSumOfHoursAllocated();
int totalAllocatedHours = AggregateOfDayAssignments.create(
this.getDayAssignments()).getTotalHours();
int totalTheoreticalCompletedHours = this.getTheoreticalCompletedHoursUntilDate(date);
if(Math.min(totalAllocatedHours, totalTheoreticalCompletedHours) == 0) {
return BigDecimal.ZERO;

View file

@ -348,7 +348,8 @@ public class TaskTest {
@Test
public void theoreticalPercentageIsOneIfDateIsLaterThanEndDate() {
prepareTaskForTheoreticalAdvanceTesting();
assertThat(task.getTheoreticalAdvancePercentageUntilDate(task.getEndDate()), equalTo(new BigDecimal(1)));
assertThat(task.getTheoreticalAdvancePercentageUntilDate(task.getEndDate()),
equalTo(new BigDecimal("1.00000000")));
}
@ -357,7 +358,7 @@ public class TaskTest {
prepareTaskForTheoreticalAdvanceTesting();
LocalDate limit = task.getStartAsLocalDate().plusDays(1);
assertThat(task.getTheoreticalAdvancePercentageUntilDate(limit.toDateTimeAtStartOfDay().toDate()),
equalTo(new BigDecimal("0.2")));
equalTo(new BigDecimal("0.20000000")));
}
private void prepareTaskForTheoreticalAdvanceTesting() {