ItEr18S13CreacionDeOrganizacionsDeTraballoItEr17S09: validate code the sons of each order element and append the name of the orderline to the message of error

This commit is contained in:
Susana Montes Pedreira 2009-07-21 13:41:59 +02:00 committed by Javier Moran Rua
parent 7e0241a15c
commit 4059f70b02
4 changed files with 38 additions and 2 deletions

View file

@ -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<OrderElement> children = new ArrayList<OrderElement>();
@Override
@Valid
public List<OrderElement> getChildren() {
return new ArrayList<OrderElement>(children);
}

View file

@ -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 <br />
* @author Óscar González Fernández <ogonzalez@igalia.com>
*/
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);
}

View file

@ -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);
}
}
}

View file

@ -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;
}
});
}
}