From 14358eb27f48b30563be1709ef9ce1343a944765 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 20 Jul 2011 09:57:13 +0200 Subject: [PATCH] Adapted ScenarioCRUDController to extend BaseCRUDController. FEA: ItEr75S14ShowInformationEditedEntity --- .../business/scenarios/entities/Scenario.java | 12 +- .../web/common/BaseCRUDController.java | 10 +- .../web/scenarios/ScenarioCRUDController.java | 105 +++++++----------- .../src/main/webapp/scenarios/_edition.zul | 31 +++--- .../src/main/webapp/scenarios/_list.zul | 4 +- .../src/main/webapp/scenarios/scenarios.zul | 9 +- 6 files changed, 76 insertions(+), 95 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java b/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java index 958558e72..226935e40 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java @@ -29,8 +29,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -39,6 +39,7 @@ import org.hibernate.validator.AssertTrue; import org.hibernate.validator.NotEmpty; import org.joda.time.DateTime; import org.navalplanner.business.common.BaseEntity; +import org.navalplanner.business.common.IHumanIdentifiable; import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.orders.entities.Order; @@ -50,7 +51,7 @@ import org.navalplanner.business.scenarios.daos.IScenarioDAO; * * @author Manuel Rego Casasnovas */ -public class Scenario extends BaseEntity { +public class Scenario extends BaseEntity implements IHumanIdentifiable { private String name; @@ -276,4 +277,9 @@ public class Scenario extends BaseEntity { .hasBeenModifiedAfter(lastNotOwnedReassignationsTimeStamp); } -} \ No newline at end of file + @Override + public String getHumanId() { + return name; + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/BaseCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/BaseCRUDController.java index bf9a8d880..281d9748b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/BaseCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/BaseCRUDController.java @@ -57,11 +57,11 @@ public abstract class BaseCRUDController extends protected Window editWindow; - private enum CRUCControllerState { + protected enum CRUDControllerState { LIST, CREATE, EDIT }; - private CRUCControllerState state = CRUCControllerState.LIST; + protected CRUDControllerState state = CRUDControllerState.LIST; /** * Call to super and do some extra stuff:
@@ -153,7 +153,7 @@ public abstract class BaseCRUDController extends * Show list window and reload bindings there */ public final void goToList() { - state = CRUCControllerState.LIST; + state = CRUDControllerState.LIST; showListWindow(); } @@ -162,7 +162,7 @@ public abstract class BaseCRUDController extends * implemented in subclasses. */ public final void goToCreateForm() { - state = CRUCControllerState.CREATE; + state = CRUDControllerState.CREATE; initCreate(); showEditWindow(); } @@ -180,7 +180,7 @@ public abstract class BaseCRUDController extends * Entity to be edited */ public final void goToEditForm(T entity) { - state = CRUCControllerState.EDIT; + state = CRUDControllerState.EDIT; initEdit(entity); showEditWindow(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/scenarios/ScenarioCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/scenarios/ScenarioCRUDController.java index fde5fdcc9..5962f965c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/scenarios/ScenarioCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/scenarios/ScenarioCRUDController.java @@ -29,26 +29,22 @@ import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.scenarios.IScenarioManager; import org.navalplanner.business.scenarios.bootstrap.PredefinedScenarios; import org.navalplanner.business.scenarios.entities.Scenario; -import org.navalplanner.web.common.IMessagesForUser; +import org.navalplanner.web.common.BaseCRUDController; import org.navalplanner.web.common.ITemplateModel; -import org.navalplanner.web.common.Level; -import org.navalplanner.web.common.MessagesForUser; -import org.navalplanner.web.common.OnlyOneVisible; -import org.navalplanner.web.common.Util; import org.navalplanner.web.common.ITemplateModel.IOnFinished; +import org.navalplanner.web.common.Level; +import org.navalplanner.web.common.Util; import org.navalplanner.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; 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.Button; import org.zkoss.zul.Label; import org.zkoss.zul.SimpleTreeNode; @@ -56,14 +52,13 @@ import org.zkoss.zul.Treecell; import org.zkoss.zul.Treeitem; import org.zkoss.zul.TreeitemRenderer; import org.zkoss.zul.Treerow; -import org.zkoss.zul.api.Window; /** * Controller for CRUD actions over a {@link Scenario}. * * @author Manuel Rego Casasnovas */ -public class ScenarioCRUDController extends GenericForwardComposer { +public class ScenarioCRUDController extends BaseCRUDController { private static final Log LOG = LogFactory .getLog(ScenarioCRUDController.class); @@ -77,76 +72,36 @@ public class ScenarioCRUDController extends GenericForwardComposer { @Autowired private IScenarioManager scenarioManager; - private Window listWindow; - - private Window createWindow; - - private Window editWindow; - - private OnlyOneVisible visibility; - - private IMessagesForUser messagesForUser; - - private Component messagesContainer; - private ScenariosTreeitemRenderer scenariosTreeitemRenderer = new ScenariosTreeitemRenderer(); public Scenario getScenario() { return scenarioModel.getScenario(); } - @Override - public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); - messagesForUser = new MessagesForUser(messagesContainer); - comp.setVariable("scenarioController", this, true); - getVisibility().showOnly(listWindow); - } - public void cancel() { scenarioModel.cancel(); - goToList(); - } - - public void goToList() { - Util.reloadBindings(listWindow); - getVisibility().showOnly(listWindow); - } - - public void goToEditForm(Scenario scenario) { - scenarioModel.initEdit(scenario); - getVisibility().showOnly(editWindow); - Util.reloadBindings(editWindow); } + @Override public void save() { - try { - scenarioModel.confirmSave(); - messagesForUser.showMessage(Level.INFO, _("Scenario \"{0}\" saved", - scenarioModel.getScenario().getName())); - goToList(); - } catch (ValidationException e) { - messagesForUser.showInvalidValues(e); - } + scenarioModel.confirmSave(); } - private OnlyOneVisible getVisibility() { - if (visibility == null) { - visibility = new OnlyOneVisible(listWindow, createWindow, - editWindow); - } - return visibility; + @Override + protected void initCreate() { + // Do nothing, direct scenario creation is not allowed it should be + // derived } public void goToCreateDerivedForm(Scenario scenario) { + state = CRUDControllerState.CREATE; scenarioModel.initCreateDerived(scenario); - getVisibility().showOnly(createWindow); - Util.reloadBindings(createWindow); + showEditWindow(); } public ScenariosTreeModel getScenariosTreeModel() { - return new ScenariosTreeModel(new ScenarioTreeRoot(scenarioModel - .getScenarios())); + return new ScenariosTreeModel(new ScenarioTreeRoot( + scenarioModel.getScenarios())); } public ScenariosTreeitemRenderer getScenariosTreeitemRenderer() { @@ -205,8 +160,7 @@ public class ScenarioCRUDController extends GenericForwardComposer { @Override public void onEvent(Event event) { - scenarioModel.remove(scenario); - Util.reloadBindings(listWindow); + confirmDelete(scenario); } }); @@ -279,4 +233,29 @@ public class ScenarioCRUDController extends GenericForwardComposer { return scenario.getOrders().keySet(); } -} + @Override + protected String getEntityType() { + return "Scenario"; + } + + @Override + protected String getPluralEntityType() { + return "Scenarios"; + } + + @Override + protected void initEdit(Scenario scenario) { + scenarioModel.initEdit(scenario); + } + + @Override + protected Scenario getEntityBeingEdited() { + return scenarioModel.getScenario(); + } + + @Override + protected void delete(Scenario scenario) throws InstanceNotFoundException { + scenarioModel.remove(scenario); + } + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/webapp/scenarios/_edition.zul b/navalplanner-webapp/src/main/webapp/scenarios/_edition.zul index f3e1f044d..5fef633a6 100644 --- a/navalplanner-webapp/src/main/webapp/scenarios/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/scenarios/_edition.zul @@ -19,7 +19,7 @@ along with this program. If not, see . --> - + @@ -29,22 +29,23 @@ - + -