From f1c21413f6f5bc865574793036915e3d2ea078ab Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 28 Jun 2012 08:22:42 +0200 Subject: [PATCH] Bug #1443: Review other places where InvalidValue is used and mark to translate Move some code to print errors from OrderCRUDController to SaveCommandBuilder as it was not been used in OrderCRUDController anymore. FEA: ItEr76S04BugFixing --- .../orders/entities/InfoComponent.java | 2 - .../entities/InfoComponentWithCode.java | 2 - .../orders/entities/OrderElement.java | 4 +- .../entities/OrderElementTemplate.java | 3 +- .../web/labels/LabelTypeCRUDController.java | 6 +- .../web/materials/MaterialsController.java | 11 +++- ...kQualityFormsToOrderElementController.java | 8 +-- .../web/orders/OrderCRUDController.java | 54 ----------------- .../web/planner/order/SaveCommandBuilder.java | 60 ++++++++++++++++++- .../worker/CriterionsController.java | 6 +- .../worker/CriterionsMachineController.java | 8 +-- .../templates/OrderTemplatesController.java | 11 +--- .../libreplan/web/tree/TreeController.java | 4 +- .../web/users/IOrderAuthorizationModel.java | 2 - .../users/OrderAuthorizationController.java | 4 -- .../web/users/OrderAuthorizationModel.java | 6 -- .../web/util/ValidationExceptionPrinter.java | 6 +- 17 files changed, 87 insertions(+), 110 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponent.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponent.java index 2fd1cf33c..2833bf9fb 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponent.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponent.java @@ -20,7 +20,6 @@ */ package org.libreplan.business.orders.entities; -import org.hibernate.validator.NotEmpty; /** * @author Óscar González Fernández @@ -38,7 +37,6 @@ public class InfoComponent { this.name = name; } - @NotEmpty(message = "name not specified") public String getName() { return name; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponentWithCode.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponentWithCode.java index a1d313821..75862df43 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponentWithCode.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/InfoComponentWithCode.java @@ -18,7 +18,6 @@ */ package org.libreplan.business.orders.entities; -import org.hibernate.validator.NotEmpty; /** * @author Jacobo Aragunde Pérez @@ -31,7 +30,6 @@ public class InfoComponentWithCode extends InfoComponent { this.code = code; } - @NotEmpty(message = "code not specified") public String getCode() { return code; } diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java index 0c3f6c514..a5fdb7563 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderElement.java @@ -37,6 +37,7 @@ import java.util.Set; import org.apache.commons.lang.Validate; import org.hibernate.validator.AssertTrue; import org.hibernate.validator.InvalidValue; +import org.hibernate.validator.NotEmpty; import org.hibernate.validator.Valid; import org.joda.time.LocalDate; import org.libreplan.business.advance.bootstrap.PredefinedAdvancedTypes; @@ -515,6 +516,7 @@ public abstract class OrderElement extends IntegrationEntity implements public abstract List getHoursGroups(); + @NotEmpty(message = "name not specified") public String getName() { return getInfoComponent().getName(); } @@ -582,6 +584,7 @@ public abstract class OrderElement extends IntegrationEntity implements this.getInfoComponent().setCode(code); } + @NotEmpty(message = "code not specified") public String getCode() { return getInfoComponent().getCode(); } @@ -1290,7 +1293,6 @@ public abstract class OrderElement extends IntegrationEntity implements return directAdvanceAssignment; } - @Valid public InfoComponentWithCode getInfoComponent() { if (infoComponent == null) { infoComponent = new InfoComponentWithCode(); diff --git a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java index f7d080ec4..9f4c3aaf6 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java +++ b/libreplan-business/src/main/java/org/libreplan/business/templates/entities/OrderElementTemplate.java @@ -35,6 +35,7 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.NonUniqueResultException; import org.hibernate.validator.AssertTrue; import org.hibernate.validator.Min; +import org.hibernate.validator.NotEmpty; import org.hibernate.validator.Valid; import org.joda.time.DateTime; import org.joda.time.Days; @@ -321,7 +322,6 @@ public abstract class OrderElementTemplate extends BaseEntity implements this.parent = parent; } - @Valid private InfoComponent getInfoComponent() { if (infoComponent == null) { infoComponent = new InfoComponent(); @@ -362,6 +362,7 @@ public abstract class OrderElementTemplate extends BaseEntity implements getInfoComponent().setDescription(description); } + @NotEmpty(message = "name not specified") public String getName() { return getInfoComponent().getName(); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/labels/LabelTypeCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/labels/LabelTypeCRUDController.java index 9724b82c3..8d320791d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/labels/LabelTypeCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/labels/LabelTypeCRUDController.java @@ -27,7 +27,6 @@ import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.List; -import org.hibernate.validator.InvalidValue; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.labels.entities.Label; import org.libreplan.business.labels.entities.LabelType; @@ -232,10 +231,7 @@ public class LabelTypeCRUDController extends BaseCRUDController { forceSortGridLabels(); newLabelTextbox.setValue(""); } catch (ValidationException e) { - for (InvalidValue invalidValue : e.getInvalidValues()) { - messagesForUser.showMessage(Level.ERROR, invalidValue - .getMessage()); - } + messagesForUser.showInvalidValues(e); } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/materials/MaterialsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/materials/MaterialsController.java index 268b24ceb..494680fdd 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/materials/MaterialsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/materials/MaterialsController.java @@ -327,7 +327,8 @@ public class MaterialsController extends MaterialCategory materialCategory = (MaterialCategory) value; Component comp = findInMaterialCategoryTree(materialCategory); if (comp != null) { - throw new WrongValueException(comp, invalidValue.getMessage()); + throw new WrongValueException(comp, + _(invalidValue.getMessage())); } } } @@ -418,10 +419,14 @@ public class MaterialsController extends final Treeitem treeitem = findTreeItemByMaterialCategory(categoriesTree, materialCategory); if (treeitem != null) { if(each.getPropertyName().equals("name")) { - throw new WrongValueException(getCategoryTextbox(treeitem), each.getMessage()); + throw new WrongValueException( + getCategoryTextbox(treeitem), + _(each.getMessage())); } if(each.getPropertyName().equals("code")) { - throw new WrongValueException(getCategoryCodeTextbox(treeitem), each.getMessage()); + throw new WrongValueException( + getCategoryCodeTextbox(treeitem), + _(each.getMessage())); } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedTaskQualityFormsToOrderElementController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedTaskQualityFormsToOrderElementController.java index 721d9829f..9816e96cc 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedTaskQualityFormsToOrderElementController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/AssignedTaskQualityFormsToOrderElementController.java @@ -609,14 +609,14 @@ public class AssignedTaskQualityFormsToOrderElementController extends if (TaskQualityFormItem.propertyDate.equals(propertyName)) { openDetails(rowItem); Datebox datebox = getDatebox(rowItem); - throw new WrongValueException(datebox, invalidValue - .getMessage()); + throw new WrongValueException(datebox, + _(invalidValue.getMessage())); } if (TaskQualityFormItem.propertyPassed.equals(propertyName)) { openDetails(rowItem); Checkbox checkbox = getCheckbox(rowItem); - throw new WrongValueException(checkbox, invalidValue - .getMessage()); + throw new WrongValueException(checkbox, + _(invalidValue.getMessage())); } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java index 4580ab651..28f3f868d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java @@ -37,16 +37,13 @@ import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.LogFactory; -import org.hibernate.validator.InvalidValue; import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.common.exceptions.InstanceNotFoundException; -import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.externalcompanies.entities.DeadlineCommunication; import org.libreplan.business.externalcompanies.entities.DeliverDateComparator; import org.libreplan.business.externalcompanies.entities.EndDateCommunication; import org.libreplan.business.externalcompanies.entities.ExternalCompany; import org.libreplan.business.orders.daos.IOrderDAO; -import org.libreplan.business.orders.entities.HoursGroup; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.Order.SchedulingMode; import org.libreplan.business.orders.entities.OrderElement; @@ -125,47 +122,6 @@ public class OrderCRUDController extends GenericForwardComposer { private static final String DEFAULT_TAB = "tabOrderElements"; - private static final class LabelCreatorForInvalidValues implements - IMessagesForUser.ICustomLabelCreator { - - @Override - public Component createLabelFor( - InvalidValue invalidValue) { - if (invalidValue.getBean() instanceof OrderElement) { - Label result = new Label(); - - String orderElementName; - if (invalidValue.getBean() instanceof Order) { - orderElementName = _("Project"); - } else { - orderElementName = ((OrderElement) invalidValue - .getBean()).getName(); - } - - result.setValue(orderElementName + " " - + invalidValue.getPropertyName() + ": " - + invalidValue.getMessage()); - return result; - } else if (invalidValue.getBean() instanceof HoursGroup) { - Label result = new Label(); - HoursGroup hoursGroup = (HoursGroup) invalidValue.getBean(); - result.setValue(_("Hours Group at ") - + getParentName(hoursGroup) + ". " - + invalidValue.getPropertyName() + ": " - + invalidValue.getMessage()); - return result; - }else { - return MessagesForUser.createLabelFor(invalidValue); - } - } - - private String getParentName(HoursGroup hoursGroup) { - return (hoursGroup.getParentOrderLine() != null) ? hoursGroup - .getParentOrderLine().getName() : hoursGroup - .getOrderLineTemplate().getName(); - } - } - private static final org.apache.commons.logging.Log LOG = LogFactory .getLog(OrderCRUDController.class); @@ -692,11 +648,6 @@ public class OrderCRUDController extends GenericForwardComposer { Util.reloadBindings(orderElementAuthorizations); } - private void saveOrderAuthorizations() { - setupOrderAuthorizationController(); - orderAuthorizationController.save(); - } - public List getOrders() { return orderModel.getOrders(); } @@ -806,11 +757,6 @@ public class OrderCRUDController extends GenericForwardComposer { } orderModel.save(showSaveMessage); - try { - saveOrderAuthorizations(); - } catch (ValidationException e) { - messagesForUser.showInvalidValues(e, new LabelCreatorForInvalidValues()); - } } Tab tabGeneralData; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java index 83b39055a..5545e6015 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java @@ -88,6 +88,8 @@ import org.libreplan.business.scenarios.entities.Scenario; import org.libreplan.business.users.daos.IOrderAuthorizationDAO; import org.libreplan.business.users.entities.OrderAuthorization; import org.libreplan.business.workingday.IntraDayDate; +import org.libreplan.web.common.IMessagesForUser; +import org.libreplan.web.common.MessagesForUser; import org.libreplan.web.common.concurrentdetection.ConcurrentModificationHandling; import org.libreplan.web.planner.TaskElementAdapter; import org.libreplan.web.planner.order.PlanningStateCreator.PlanningState; @@ -104,6 +106,7 @@ import org.zkoss.ganttz.data.GanttDate; import org.zkoss.ganttz.data.constraint.Constraint; import org.zkoss.ganttz.extensions.IContext; import org.zkoss.zk.ui.Executions; +import org.zkoss.zul.Label; import org.zkoss.zul.Messagebox; /** @@ -319,12 +322,22 @@ public class SaveCommandBuilder { } try { - String message = validationException.getMessage(); + String message = ""; + + LabelCreatorForInvalidValues labelCreator = new LabelCreatorForInvalidValues(); for (InvalidValue invalidValue : validationException .getInvalidValues()) { - message += "\n" + invalidValue.getPropertyName() + ": " - + invalidValue.getMessage(); + message += "* " + + ((Label) labelCreator + .createLabelFor(invalidValue)) + .getValue() + "\n"; } + + if (validationException.getInvalidValues().length == 0) { + message += validationException.getMessage(); + } + + LOG.warn(validationException.getMessage()); Messagebox.show( _("Error saving the project\n{0}", message), _("Error"), Messagebox.OK, Messagebox.ERROR); @@ -1063,4 +1076,45 @@ public class SaveCommandBuilder { } } + + private static final class LabelCreatorForInvalidValues implements + IMessagesForUser.ICustomLabelCreator { + + @Override + public org.zkoss.zk.ui.Component createLabelFor( + InvalidValue invalidValue) { + if (invalidValue.getBean() instanceof OrderElement) { + Label result = new Label(); + + String orderElementName; + if (invalidValue.getBean() instanceof Order) { + orderElementName = _("Project"); + } else { + orderElementName = _("Task {0}", + ((OrderElement) invalidValue.getBean()).getName()); + } + + result.setValue(orderElementName + ": " + + _(invalidValue.getMessage())); + return result; + } else if (invalidValue.getBean() instanceof HoursGroup) { + Label result = new Label(); + HoursGroup hoursGroup = (HoursGroup) invalidValue.getBean(); + result.setValue(_("Hours Group at {0}", + getParentName(hoursGroup)) + + ": " + + _(invalidValue.getMessage())); + return result; + } else { + return MessagesForUser.createLabelFor(invalidValue); + } + } + + private String getParentName(HoursGroup hoursGroup) { + return (hoursGroup.getParentOrderLine() != null) ? hoursGroup + .getParentOrderLine().getName() : hoursGroup + .getOrderLineTemplate().getName(); + } + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java index 9ae1540f3..6937d6d2d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java @@ -259,10 +259,8 @@ public class CriterionsController extends GenericForwardComposer { reload(); } catch (ValidationException e) { showInvalidValues(e); - for (InvalidValue invalidValue : e.getInvalidValues()) { - messages.showMessage(Level.ERROR, invalidValue.getPropertyName()+invalidValue.getMessage()); - return false; - } + messages.showInvalidValues(e); + return false; } catch (IllegalStateException e) { messages.showMessage(Level.ERROR,e.getMessage()); return false; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java index 08516f09d..6dfd51428 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsMachineController.java @@ -265,12 +265,8 @@ public class CriterionsMachineController extends GenericForwardComposer { reload(); } catch (ValidationException e) { showInvalidValues(e); - for (InvalidValue invalidValue : e.getInvalidValues()) { - messages.showMessage(Level.ERROR, invalidValue - .getPropertyName() - + invalidValue.getMessage()); - return false; - } + messages.showInvalidValues(e); + return false; } catch (IllegalStateException e) { messages.showMessage(Level.ERROR, e.getMessage()); return false; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java index 351a7af09..543807766 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/templates/OrderTemplatesController.java @@ -28,7 +28,6 @@ import java.util.List; import javax.annotation.Resource; import org.apache.commons.logging.LogFactory; -import org.hibernate.validator.InvalidValue; import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.orders.entities.OrderElement; @@ -225,10 +224,7 @@ public class OrderTemplatesController extends GenericForwardComposer implements messagesForUser.showMessage(Level.INFO, _("Template saved")); show(listWindow); } catch (ValidationException e) { - for (InvalidValue invalidValue : e.getInvalidValues()) { - messagesForUser.showMessage(Level.ERROR, - invalidValue.getMessage()); - } + messagesForUser.showInvalidValues(e); } } } @@ -245,10 +241,7 @@ public class OrderTemplatesController extends GenericForwardComposer implements bindTemplatesTreeWithModel(); messagesForUser.showMessage(Level.INFO, _("Template saved")); } catch (ValidationException e) { - for (InvalidValue invalidValue : e.getInvalidValues()) { - messagesForUser.showMessage(Level.ERROR, - invalidValue.getMessage()); - } + messagesForUser.showInvalidValues(e); } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java b/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java index 2ccdf46a2..131e41a30 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java @@ -699,8 +699,8 @@ public abstract class TreeController> extends InvalidValue[] invalidValues = validator.getPotentialInvalidValues( property, value); if (invalidValues.length > 0) { - throw new WrongValueException(component, invalidValues[0] - .getMessage()); + throw new WrongValueException(component, + _(invalidValues[0].getMessage())); } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/IOrderAuthorizationModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/IOrderAuthorizationModel.java index 82d5969d6..0fbdc17d6 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/IOrderAuthorizationModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/IOrderAuthorizationModel.java @@ -42,8 +42,6 @@ public interface IOrderAuthorizationModel { void initEdit(PlanningState planningState); - void confirmSave(); - List getProfileOrderAuthorizations(); List getUserOrderAuthorizations(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationController.java index 1757b0b90..0c984c8b8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationController.java @@ -76,10 +76,6 @@ public class OrderAuthorizationController extends GenericForwardComposer{ Util.reloadBindings(window); } - public void save() { - orderAuthorizationModel.confirmSave(); - } - public List getProfileOrderAuthorizations() { return orderAuthorizationModel.getProfileOrderAuthorizations(); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationModel.java index 07a87e7fd..fe5d6672b 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/OrderAuthorizationModel.java @@ -107,12 +107,6 @@ public class OrderAuthorizationModel implements IOrderAuthorizationModel { return duplicated.isEmpty()? null : duplicated; } - @Override - @Transactional - public void confirmSave() { - // Do nothing - } - @Override public List getProfileOrderAuthorizations() { return profileOrderAuthorizationList; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/util/ValidationExceptionPrinter.java b/libreplan-webapp/src/main/java/org/libreplan/web/util/ValidationExceptionPrinter.java index ef11ada6d..cda03d6de 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/util/ValidationExceptionPrinter.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/util/ValidationExceptionPrinter.java @@ -19,6 +19,8 @@ package org.libreplan.web.util; +import static org.libreplan.web.I18nHelper._; + import org.hibernate.validator.InvalidValue; import org.libreplan.business.common.exceptions.ValidationException; import org.zkoss.ganttz.util.ComponentsFinder; @@ -47,13 +49,13 @@ public class ValidationExceptionPrinter { } private static void showAt(Component comp, InvalidValue invalidValue) { - throw new WrongValueException(comp, invalidValue.getMessage()); + throw new WrongValueException(comp, _(invalidValue.getMessage())); } private static void showAt(Grid comp, InvalidValue invalidValue) { Row row = ComponentsFinder.findRowByValue(comp, invalidValue.getValue()); if (row != null) { - throw new WrongValueException(row, invalidValue.getMessage()); + throw new WrongValueException(row, _(invalidValue.getMessage())); } }