From cf2b729f5df6799df8e9cffa516628a62e7fc6f1 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 10 Mar 2011 18:57:21 +0100 Subject: [PATCH] [Bug #928] Add a button in the template list to allow deleting templates. Allow deleting templates if it has not any applications. FEA : ItEr72S04BugFixing --- .../web/templates/IOrderTemplatesModel.java | 4 +++ .../templates/OrderTemplatesController.java | 31 +++++++++++++++++++ .../web/templates/OrderTemplatesModel.java | 17 ++++++++++ .../src/main/webapp/templates/_list.zul | 4 +++ 4 files changed, 56 insertions(+) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java index 71d8047c9..c1f44d50f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java @@ -68,4 +68,8 @@ public interface IOrderTemplatesModel { Map> getMapCriterions(); Scenario getCurrentScenario(); + + void confirmDelete(OrderElementTemplate template); + + boolean hasNotApplications(OrderElementTemplate template); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java index ffa21b58d..ee00f4c98 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java @@ -55,8 +55,10 @@ import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Constraint; +import org.zkoss.zul.Grid; import org.zkoss.zul.Image; import org.zkoss.zul.Label; +import org.zkoss.zul.Messagebox; import org.zkoss.zul.Tab; import org.zkoss.zul.Textbox; import org.zkoss.zul.Tree; @@ -339,4 +341,33 @@ public class OrderTemplatesController extends GenericForwardComposer implements } }; } + + /** + * Pop up confirm remove dialog + * @param OrderTemplate + */ + public void confirmDelete(OrderElementTemplate template) { + try { + if (Messagebox.show(_("Delete order template. Are you sure?"), + _("Confirm"), + Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION) == Messagebox.OK) { + if (this.model.hasNotApplications(template)) { + this.model.confirmDelete(template); + Grid gridOrderTemplates = (Grid) listWindow + .getFellowIfAny("listing"); + if (gridOrderTemplates != null) { + Util.reloadBindings(gridOrderTemplates); + } + } else { + messagesForUser + .showMessage( + Level.ERROR, + _("This template can not be removed because it has applications.")); + } + } + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java index cebf59217..e0265811d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java @@ -33,6 +33,7 @@ import java.util.Set; import org.navalplanner.business.advance.entities.AdvanceAssignmentTemplate; import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.labels.daos.ILabelDAO; import org.navalplanner.business.labels.entities.Label; import org.navalplanner.business.orders.daos.IOrderDAO; @@ -319,4 +320,20 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { return result; } + @Override + @Transactional + public void confirmDelete(OrderElementTemplate template) { + try { + dao.remove(template.getId()); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(); + } + } + + @Override + @Transactional(readOnly = true) + public boolean hasNotApplications(OrderElementTemplate template) { + getOrderElementsOnConversation().initialize(template); + return getOrderElementsOnConversation().getOrderElements().isEmpty(); + } } diff --git a/navalplanner-webapp/src/main/webapp/templates/_list.zul b/navalplanner-webapp/src/main/webapp/templates/_list.zul index 615b218bf..16ffdb22f 100644 --- a/navalplanner-webapp/src/main/webapp/templates/_list.zul +++ b/navalplanner-webapp/src/main/webapp/templates/_list.zul @@ -48,6 +48,10 @@ tooltiptext="${i18n:_('Edit')}" onClick="templatesForOrdersController.goToEditForm(self.parent.parent.value);"> +