protected void initialize(Plan plan, ReservationId reservationId,
ReservationDefinition reservation) throws PlanningException {
capacity = plan.getTotalCapacity();
step = plan.getStep();
jobType = reservation.getReservationRequests().getInterpreter();
jobArrival = stepRoundUp(reservation.getArrival(), step);
jobDeadline = stepRoundDown(reservation.getDeadline(), step);
planModifications =
new RLESparseResourceAllocation(plan.getResourceCalculator());
planLoads = plan.getCumulativeLoadOverTime(jobArrival, jobDeadline);
ReservationAllocation oldRes = plan.getReservationById(reservationId);
if (oldRes != null) {
planLoads = RLESparseResourceAllocation.merge(
plan.getResourceCalculator(), plan.getTotalCapacity(), planLoads,
oldRes.getResourcesOverTime(jobArrival, jobDeadline),
RLEOperator.subtract, jobArrival, jobDeadline);
}
}