public synchronized void save() throws Exception {
if(revision != null) {
PlannedMenuEvent event = (PlannedMenuEvent)super.getData();
if(event.getPlannedMenu() != null) {
PlannedMenu plannedMenu = event.getPlannedMenu();
PlannedMenuEvent oldEvent = (PlannedMenuEvent)BeanUtil.copy(event);
BeanUtil.copyProperties(revision, event);
// Perform save of parent. In case of error, restore original values
try {
if(plannedMenu.getKey() == null) {
plannedMenu.setProject(project);
List<PlannedMenu> plannedMenus = new ArrayList<PlannedMenu>();
plannedMenus.add(plannedMenu);
project.setPlannedMenus(plannedMenus);
}
plannedMenu.getPlannedMenuEvents().add(event);
PlannedMenuDAO.save(plannedMenu, cache);
} catch (Exception e) {
BeanUtil.copyProperties(oldEvent, event);