ItEr48S04ValidacionEProbasFuncionaisItEr47S04: [Bug #319] The calendarAvailabilities are respected for generic allocations
This commit is contained in:
parent
7a23767849
commit
6147adaa14
2 changed files with 24 additions and 3 deletions
|
|
@ -25,6 +25,7 @@ import java.util.List;
|
|||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.calendars.entities.IWorkHours;
|
||||
import org.navalplanner.business.calendars.entities.ResourceCalendar;
|
||||
import org.navalplanner.business.calendars.entities.SameWorkHoursEveryDay;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
||||
|
|
@ -107,12 +108,28 @@ public class HoursDistributor {
|
|||
|
||||
public List<ResourceWithAssignedHours> distributeForDay(LocalDate day,
|
||||
int totalHours) {
|
||||
List<ShareSource> shares = divisionAt(resources, day);
|
||||
List<ResourceWithDerivedData> resourcesAssignable = resourcesAssignableAt(day);
|
||||
List<ShareSource> shares = divisionAt(resourcesAssignable, day);
|
||||
ShareDivision currentDivision = ShareSource.all(shares);
|
||||
ShareDivision newDivison = currentDivision.plus(totalHours);
|
||||
int[] differences = currentDivision.to(newDivison);
|
||||
return ShareSource.hoursForEachResource(shares, differences,
|
||||
ResourceWithDerivedData.resources(resources));
|
||||
ResourceWithDerivedData.resources(resourcesAssignable));
|
||||
}
|
||||
|
||||
private List<ResourceWithDerivedData> resourcesAssignableAt(LocalDate day) {
|
||||
List<ResourceWithDerivedData> result = new ArrayList<ResourceWithDerivedData>();
|
||||
for (ResourceWithDerivedData each : resources) {
|
||||
if (isActiveAt(day, each)) {
|
||||
result.add(each);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean isActiveAt(LocalDate day, ResourceWithDerivedData each) {
|
||||
ResourceCalendar resourceCalendar = each.resource.getCalendar();
|
||||
return resourceCalendar != null ? resourceCalendar.isActive(day) : true;
|
||||
}
|
||||
|
||||
private static final ResourcesPerDay ONE = ResourcesPerDay.amount(1);
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ public class GenericResourceAllocationTest {
|
|||
|
||||
private void givenWorkersWithLoads(int hours1, int hours2, int hours3) {
|
||||
ResourceCalendar[] calendars;
|
||||
if(workerCalendars ==null){
|
||||
if (workerCalendars == null) {
|
||||
calendars = new ResourceCalendar[] { null, null, null };
|
||||
} else {
|
||||
calendars = new ResourceCalendar[] { workerCalendars.get(0),
|
||||
|
|
@ -186,6 +186,8 @@ public class GenericResourceAllocationTest {
|
|||
hoursPerDay).anyTimes();
|
||||
expect(baseCalendar.getCapacityAt(isA(LocalDate.class))).andReturn(
|
||||
hoursPerDay).anyTimes();
|
||||
expect(baseCalendar.isActive(isA(LocalDate.class))).andReturn(true)
|
||||
.anyTimes();
|
||||
expect(
|
||||
baseCalendar.toHours(isA(LocalDate.class),
|
||||
isA(ResourcesPerDay.class))).andAnswer(
|
||||
|
|
@ -519,6 +521,8 @@ public class GenericResourceAllocationTest {
|
|||
capacity * unit).anyTimes();
|
||||
expect(calendar.toHours(isA(LocalDate.class),
|
||||
isA(ResourcesPerDay.class))).andReturn(unit).anyTimes();
|
||||
expect(calendar.isActive(isA(LocalDate.class))).andReturn(true)
|
||||
.anyTimes();
|
||||
expect(calendar.getCapacity()).andReturn(capacity).anyTimes();
|
||||
replay(calendar);
|
||||
return calendar;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue