From 4059f70b027dcc34a115be2cc381281bf99d56b7 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Tue, 21 Jul 2009 13:41:59 +0200 Subject: [PATCH] ItEr18S13CreacionDeOrganizacionsDeTraballoItEr17S09: validate code the sons of each order element and append the name of the orderline to the message of error --- .../business/orders/entities/OrderLineGroup.java | 2 ++ .../navalplanner/web/common/IMessagesForUser.java | 8 ++++++++ .../navalplanner/web/common/MessagesForUser.java | 15 ++++++++++++++- .../web/orders/OrderCRUDController.java | 15 ++++++++++++++- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java index f0cea7ed2..c7c1a70a4 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java @@ -2,12 +2,14 @@ package org.navalplanner.business.orders.entities; import java.util.ArrayList; import java.util.List; +import org.hibernate.validator.Valid; public class OrderLineGroup extends OrderElement implements IOrderLineGroup { private List children = new ArrayList(); @Override + @Valid public List getChildren() { return new ArrayList(children); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IMessagesForUser.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IMessagesForUser.java index f3b37ab96..91a42917c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IMessagesForUser.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IMessagesForUser.java @@ -2,12 +2,18 @@ package org.navalplanner.web.common; import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; +import org.zkoss.zk.ui.Component; /** * Defines the ways in which information messages can be shown to the user
* @author Óscar González Fernández */ public interface IMessagesForUser { + public interface ICustomLabelCreator{ + public Component createLabelFor(InvalidValue invalidValue); + } + + void invalidValue(InvalidValue invalidValue, ICustomLabelCreator customLabelCreator); void invalidValue(InvalidValue invalidValue); @@ -17,4 +23,6 @@ public interface IMessagesForUser { void showInvalidValues(ValidationException e); + void showInvalidValues(ValidationException e, ICustomLabelCreator customLabelCreator); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MessagesForUser.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MessagesForUser.java index e55441af8..1b450a375 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MessagesForUser.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/MessagesForUser.java @@ -8,6 +8,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.commons.lang.StringUtils; import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.orders.entities.OrderElement; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -92,12 +93,17 @@ public class MessagesForUser extends GenericForwardComposer implements }); } + @Override + public void invalidValue(InvalidValue invalidValue, ICustomLabelCreator customLabelCreator) { + addMessage(customLabelCreator.createLabelFor(invalidValue)); + } + @Override public void invalidValue(InvalidValue invalidValue) { addMessage(createLabelFor(invalidValue)); } - private Component createLabelFor(InvalidValue invalidValue) { + private Component createLabelFor(InvalidValue invalidValue){ Label result = new Label(); result.setValue(invalidValue.getPropertyName() + ": " + invalidValue.getMessage()); @@ -141,4 +147,11 @@ public class MessagesForUser extends GenericForwardComposer implements } } + @Override + public void showInvalidValues(ValidationException e, ICustomLabelCreator customLabelCreator) { + for (InvalidValue invalidValue : e.getInvalidValues()) { + invalidValue(invalidValue, customLabelCreator); + } + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java index f18ace106..e38b66a4b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java @@ -3,9 +3,11 @@ package org.navalplanner.web.orders; import java.util.List; import org.apache.commons.logging.LogFactory; +import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.entities.IOrderLineGroup; import org.navalplanner.business.orders.entities.Order; +import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -14,6 +16,7 @@ import org.navalplanner.web.common.Util; import org.navalplanner.web.planner.IOrderPlanningControllerEntryPoints; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.Label; import org.zkoss.zul.api.Window; /** @@ -69,7 +72,17 @@ public class OrderCRUDController extends GenericForwardComposer { messagesForUser.showMessage(Level.INFO, "order saved"); goToList(); } catch (ValidationException e) { - messagesForUser.showInvalidValues(e); + messagesForUser.showInvalidValues(e, new IMessagesForUser.ICustomLabelCreator() { + + @Override + public Component createLabelFor(InvalidValue invalidValue) { + Label result= new Label(); + String orderElementName = ((OrderElement)invalidValue.getBean()).getName(); + result.setValue(orderElementName+" "+invalidValue.getPropertyName() + ": " + + invalidValue.getMessage()); + return result; + } + }); } }