diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/ITaskElementService.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/ITaskElementService.java index cf847803e..9ab8c31a4 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/ITaskElementService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/ITaskElementService.java @@ -17,4 +17,6 @@ public interface ITaskElementService { void convertToScheduleAndSave(Order order); + void remove(TaskElement taskElement); + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/TaskElementService.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/TaskElementService.java index d1c364ef2..5b5533d22 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/TaskElementService.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/services/TaskElementService.java @@ -97,4 +97,14 @@ public class TaskElementService implements ITaskElementService { } } + @Override + @Transactional + public void remove(TaskElement taskElement) { + try { + taskElementDao.remove(taskElement.getId()); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + } + } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java index 2727ae2f0..c5e5471a3 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/planner/services/TaskElementServiceTest.java @@ -303,4 +303,31 @@ public class TaskElementServiceTest { assertThat(orderElement.getTaskElements().iterator().next(), equalTo(fromDB)); } + + @Test + public void aTaskCanBeRemoved() { + Task task = createValidTask(); + taskElementService.save(task); + flushAndEvict(task); + taskElementService.remove(task); + sessionFactory.getCurrentSession().flush(); + assertNull(sessionFactory.getCurrentSession().get(TaskElement.class, + task.getId())); + } + + @Test + public void aTaskGroupCanBeRemoved() { + TaskGroup taskGroup = createValidTaskGroup(); + Task task = createValidTask(); + taskGroup.addTaskElement(task); + taskElementService.save(taskGroup); + flushAndEvict(taskGroup); + taskElementService.remove(taskGroup); + sessionFactory.getCurrentSession().flush(); + assertNull(sessionFactory.getCurrentSession().get(TaskGroup.class, + taskGroup.getId())); + assertNull(sessionFactory.getCurrentSession().get(TaskElement.class, + task.getId())); + } + } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java index 4894d0f0d..2f068b3b8 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java @@ -44,4 +44,8 @@ public class ContextRelativeToOtherComponent implements IContext { context.remove(domainObject); } + public void replace(T oldDomainObject, T newDomainObject) { + context.replace(oldDomainObject, newDomainObject); + }; + } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java index 727440f10..059c99275 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java @@ -1,6 +1,7 @@ package org.zkoss.ganttz.extensions; import org.zkoss.ganttz.adapters.PlannerConfiguration; +import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.zk.ui.Component; @@ -43,10 +44,16 @@ public class ContextWithPlannerTask implements IContextWithPlannerTask { return context.getRelativeTo(); } + @Override + public void replace(T oldDomainObject, T newDomainObject) { + context.replace(oldDomainObject, newDomainObject); + } + @Override public Task getTask() { return task; } + }