[Bug #988] Remove former resource calendar when a new calendar is selected for a machine

FEA: ItEr74S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-04-19 19:51:44 +02:00
parent 725aee5da1
commit 0a0a80b9a1
3 changed files with 25 additions and 1 deletions

View file

@ -105,4 +105,7 @@ public interface IMachineModel extends IIntegrationEntityModel {
boolean canRemove(Machine machine);
void confirmRemove(Machine machine) throws InstanceNotFoundException;
void removeCalendar();
}

View file

@ -397,8 +397,8 @@ public class MachineCRUDController extends GenericForwardComposer {
@Override
public void cancel() {
machineModel.removeCalendar();
resourceCalendarModel.cancel();
machineModel.setCalendarOfMachine(null);
reloadWindow();
}

View file

@ -86,6 +86,7 @@ public class MachineModel extends IntegrationEntityModel implements
*
*/
private Machine machine;
private ResourceCalendar calendarToRemove = null;
private Map<Long, Criterion> criterions = new HashMap<Long, Criterion>();
private Map<Long, Worker> workers = new HashMap<Long, Worker>();
private List<Machine> machineList = new ArrayList<Machine>();
@ -259,9 +260,22 @@ public class MachineModel extends IntegrationEntityModel implements
@Override
@Transactional
public void confirmSave() throws ValidationException {
removeCalendarIfNeeded();
resourceDAO.save(machine);
}
private void removeCalendarIfNeeded() {
if (calendarToRemove != null) {
try {
resourceDAO.reattach(machine);
baseCalendarDAO.remove(calendarToRemove.getId());
calendarToRemove = null;
} catch (InstanceNotFoundException e) {
LOG.error("Couldn't remove calendar");
}
}
}
@Override
@Transactional(readOnly = true)
public List<BaseCalendar> getBaseCalendars() {
@ -377,4 +391,11 @@ public class MachineModel extends IntegrationEntityModel implements
public IntegrationEntity getCurrentEntity() {
return this.machine;
}
@Override
public void removeCalendar() {
calendarToRemove = machine.getCalendar();
machine.setCalendar(null);
}
}