From 26c1bbdb6885363e2e4b4cff3a753bbd7b0b2ed7 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Tue, 3 May 2011 08:36:35 +0200 Subject: [PATCH] [Bug #987] Pretty print ValidationExceptions as WrongValueExceptions in CostCategories FEA: ItEr74S04BugFixing --- .../CostCategoryCRUDController.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java index c33bbe16e..4b7d00863 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java @@ -192,12 +192,42 @@ public class CostCategoryCRUDController extends GenericForwardComposer messagesForUser.showMessage(Level.INFO, _("Cost category saved")); return true; } catch (ValidationException e) { - e.getInvalidValue().getValue(); - messagesForUser.showInvalidValues(e); + showInvalidValues(e); } return false; } + private void showInvalidValues(ValidationException e) { + Object value = e.getInvalidValue().getBean(); + if (value instanceof HourCost) { + showInvalidValue((HourCost) value); + } + messagesForUser.showInvalidValues(e); + } + + private void showInvalidValue(HourCost hourCost) { + Row row = ComponentsFinder.findRowByValue(listHourCosts, hourCost); + if (row != null) { + if (hourCost.getType() == null) { + Listbox workHoursType = getWorkHoursType(row); + String message = workHoursType.getItems().isEmpty() ? _("Type of hours is empty. Please, create some type of hours before proceeding") + : _("The type of hours cannot be null"); + throw new WrongValueException(getWorkHoursType(row), message); + } + if (hourCost.getPriceCost() == null) { + throw new WrongValueException(getPricePerHour(row), _("Cannot be null or empty")); + } + } + } + + private Listbox getWorkHoursType(Row row) { + return (Listbox) row.getChildren().get(1); + } + + private Component getPricePerHour(Row row) { + return (Component) row.getChildren().get(2); + } + public CostCategory getCostCategory() { return costCategoryModel.getCostCategory(); }