From b9f13d3457db7949585fe724777b22fc7636390a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 20 Jul 2009 15:37:43 +0200 Subject: [PATCH] ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Adding save command that will save the changes done to the tasks elements. --- .../web/planner/ISaveCommand.java | 16 +++++++ .../web/planner/OrderPlanningModel.java | 8 +++- .../navalplanner/web/planner/SaveCommand.java | 48 +++++++++++++++++++ .../navalplanner-webapp-spring-config.xml | 1 + 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java new file mode 100644 index 000000000..ffef9bf5a --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java @@ -0,0 +1,16 @@ +package org.navalplanner.web.planner; + +import java.util.List; + +import org.navalplanner.business.planner.entities.TaskElement; +import org.zkoss.ganttz.extensions.ICommand; + +/** + * Contract for {@link SaveCommand}
+ * @author Óscar González Fernández + */ +public interface ISaveCommand extends ICommand { + + public void setState(List taskElements); + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index 48649af3e..60da089e2 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -46,7 +46,11 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { if (!orderReloaded.isSomeTaskElementScheduled()) throw new IllegalArgumentException("the order " + order + " must be scheduled"); - onTransaction.use(createConfiguration(orderReloaded)); + PlannerConfiguration configuration = createConfiguration(orderReloaded); + ISaveCommand saveCommand = getSaveCommand(); + saveCommand.setState(state); + configuration.addGlobalCommand(saveCommand); + onTransaction.use(configuration); } private PlannerConfiguration createConfiguration( @@ -76,6 +80,8 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { // spring method injection protected abstract ITaskElementAdapter getTaskElementAdapter(); + protected abstract ISaveCommand getSaveCommand(); + private Order reload(Order order) { try { return orderService.find(order.getId()); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java new file mode 100644 index 000000000..c242c68a9 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java @@ -0,0 +1,48 @@ +package org.navalplanner.web.planner; + +import java.util.List; + +import org.navalplanner.business.planner.entities.TaskElement; +import org.navalplanner.business.planner.services.ITaskElementService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.zkoss.ganttz.extensions.IContext; + +@Component +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +/** + * A command that saves the changes in the taskElements. + * It can be considered the final step in the conversation
+ * @author Óscar González Fernández + */ +public class SaveCommand implements ISaveCommand { + + @Autowired + private ITaskElementService taskElementService; + + private List taskElements; + + @Override + public void setState(List taskElements) { + this.taskElements = taskElements; + + } + + @Override + @Transactional + public void doAction(IContext context) { + for (TaskElement taskElement : taskElements) { + taskElementService.save(taskElement); + } + // TODO redirect to another page or show message + } + + @Override + public String getName() { + return "Gardar"; + } + +} diff --git a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml index bfba9720e..603df0341 100644 --- a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml +++ b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml @@ -17,6 +17,7 @@ +