ItEr49S10CUVisualizacionResponsabilidadesTRaballoNaPlanificacionItEr48S10: Using a work hours calculated from the resources plus the task in order to calculate if there are enough hours

This commit is contained in:
Óscar González Fernández 2010-03-07 16:58:21 +01:00
parent 9fb872d2e9
commit 809244742d
2 changed files with 44 additions and 4 deletions

View file

@ -37,6 +37,7 @@ import org.hibernate.validator.NotNull;
import org.joda.time.LocalDate;
import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.calendars.entities.CombinedWorkHours;
import org.navalplanner.business.calendars.entities.IWorkHours;
import org.navalplanner.business.calendars.entities.SameWorkHoursEveryDay;
import org.navalplanner.business.calendars.entities.ThereAreHoursOnWorkHoursCalculator;
@ -214,8 +215,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
LocalDate start,
ResourcesPerDayModification resourcesPerDayModification,
int hoursToAllocate) {
IWorkHours workHoursPerDay = resourcesPerDayModification
.getBeingModified().getWorkHoursPerDay();
IWorkHours workHoursPerDay = getWorkHoursPerDay(resourcesPerDayModification);
ResourcesPerDay resourcesPerDay = resourcesPerDayModification
.getGoal();
AvailabilityTimeLine availability = resourcesPerDayModification
@ -225,6 +225,14 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
resourcesPerDay, hoursToAllocate);
}
private CombinedWorkHours getWorkHoursPerDay(
ResourcesPerDayModification resourcesPerDayModification) {
return CombinedWorkHours.minOf(resourcesPerDayModification
.getBeingModified().getTaskWorkHours(),
resourcesPerDayModification
.getResourcesWorkHoursPerDay());
}
@Override
protected void markUnsatisfied(ResourceAllocation<?> allocation) {
allocation.markAsUnsatisfied();
@ -566,10 +574,10 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
private IWorkHours getWorkHoursPerDay() {
return getWorkHoursGivenTaskHours(getTaskWorkHoursLimit());
return getWorkHoursGivenTaskHours(getTaskWorkHours());
}
private IWorkHours getTaskWorkHoursLimit() {
private IWorkHours getTaskWorkHours() {
return new IWorkHours() {
@Override
public Integer getCapacityAt(LocalDate day) {

View file

@ -28,6 +28,10 @@ import java.util.List;
import org.apache.commons.lang.Validate;
import org.joda.time.LocalDate;
import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
import org.navalplanner.business.calendars.entities.CombinedWorkHours;
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.planner.entities.AvailabilityCalculator;
import org.navalplanner.business.planner.entities.DayAssignment;
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
@ -79,6 +83,19 @@ public abstract class ResourcesPerDayModification extends
.getCriterions(), getResources());
}
@Override
public IWorkHours getResourcesWorkHoursPerDay() {
return CombinedWorkHours.maxOf(resourcesWorkHours());
}
private List<IWorkHours> resourcesWorkHours() {
List<IWorkHours> workHours = new ArrayList<IWorkHours>();
for (Resource each : getResources()) {
workHours.add(workHoursFor(each));
}
return workHours;
}
}
private static class OnSpecificAllocation extends
@ -120,6 +137,12 @@ public abstract class ResourcesPerDayModification extends
private Resource getAssociatedResource() {
return getResources().get(0);
}
@Override
public IWorkHours getResourcesWorkHoursPerDay() {
return workHoursFor(getAssociatedResource());
}
}
public static ResourcesPerDayModification create(
@ -159,6 +182,12 @@ public abstract class ResourcesPerDayModification extends
return result;
}
protected static IWorkHours workHoursFor(Resource associatedResource) {
ResourceCalendar calendar = associatedResource.getCalendar();
return calendar != null ? calendar : SameWorkHoursEveryDay
.getDefaultWorkingDay();
}
private final ResourcesPerDay goal;
private ResourcesPerDayModification(
@ -173,6 +202,8 @@ public abstract class ResourcesPerDayModification extends
return goal;
}
public abstract IWorkHours getResourcesWorkHoursPerDay();
public abstract void applyAllocationOnAllTaskLength();
public abstract void applyAllocationUntil(LocalDate endExclusive);
@ -182,4 +213,5 @@ public abstract class ResourcesPerDayModification extends
public abstract AvailabilityTimeLine getAvailability();
}