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 cbf0a051a..42ea2c740 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
@@ -31,7 +31,6 @@ import java.util.List;
import java.util.Set;
import org.apache.commons.logging.LogFactory;
-import org.hibernate.validator.InvalidValue;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
@@ -45,10 +44,9 @@ import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
import org.navalplanner.web.common.Util;
import org.navalplanner.web.common.components.Autocomplete;
+import org.navalplanner.web.util.ValidationExceptionPrinter;
import org.navalplanner.web.workreports.WorkReportCRUDController;
-import org.zkoss.ganttz.util.ComponentsFinder;
import org.zkoss.zk.ui.Component;
-import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.CheckEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
@@ -175,7 +173,7 @@ public class CostCategoryCRUDController extends GenericForwardComposer
try {
costCategoryModel.validateHourCostsOverlap();
} catch (ValidationException e) {
- showHoursCostsOverlapValidationException(e);
+ ValidationExceptionPrinter.showAt(listHourCosts, e);
}
try {
@@ -189,15 +187,6 @@ public class CostCategoryCRUDController extends GenericForwardComposer
return false;
}
- private void showHoursCostsOverlapValidationException(ValidationException e) {
- InvalidValue invalid = e.getInvalidValue();
- Row comp = ComponentsFinder.findRowByValue(listHourCosts,
- invalid.getValue());
- if (comp != null) {
- throw new WrongValueException(comp, invalid.getMessage());
- }
- }
-
public CostCategory getCostCategory() {
return costCategoryModel.getCostCategory();
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java
index 3609788bf..105cc533d 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ResourcesCostCategoryAssignmentController.java
@@ -27,7 +27,6 @@ import java.util.Date;
import java.util.List;
import org.apache.commons.logging.LogFactory;
-import org.hibernate.validator.InvalidValue;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.costcategories.entities.CostCategory;
@@ -39,10 +38,9 @@ import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.Util;
import org.navalplanner.web.common.components.Autocomplete;
+import org.navalplanner.web.util.ValidationExceptionPrinter;
import org.navalplanner.web.workreports.WorkReportCRUDController;
-import org.zkoss.ganttz.util.ComponentsFinder;
import org.zkoss.zk.ui.Component;
-import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
@@ -334,13 +332,9 @@ public class ResourcesCostCategoryAssignmentController extends GenericForwardCom
try {
CostCategory.validateCostCategoryOverlapping(costCategoryAssignments);
} catch (ValidationException e) {
- InvalidValue invalidValue = e.getInvalidValue();
- Component comp = ComponentsFinder.findRowByValue(
- listResourcesCostCategoryAssignments,
- invalidValue.getValue());
- throw new WrongValueException(comp, invalidValue.getMessage());
+ ValidationExceptionPrinter.showAt(listResourcesCostCategoryAssignments, e);
}
return true;
}
-}
+}
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/util/ValidationExceptionPrinter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/util/ValidationExceptionPrinter.java
new file mode 100644
index 000000000..f2834a15a
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/util/ValidationExceptionPrinter.java
@@ -0,0 +1,60 @@
+/*
+ * This file is part of NavalPlan
+ *
+ * Copyright (C) 2011 Igalia S.L
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package org.navalplanner.web.util;
+
+import org.hibernate.validator.InvalidValue;
+import org.navalplanner.business.common.exceptions.ValidationException;
+import org.zkoss.ganttz.util.ComponentsFinder;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.WrongValueException;
+import org.zkoss.zul.Grid;
+import org.zkoss.zul.Row;
+
+/**
+ *
+ * @author Diego Pino GarcĂa
+ *
+ * Helper class for printing a {@link ValidationException} at a
+ * component.
+ *
+ */
+public class ValidationExceptionPrinter {
+
+ public static void showAt(Component comp, ValidationException e) {
+ InvalidValue invalidValue = e.getInvalidValue();
+ if (comp instanceof Grid) {
+ showAt((Grid) comp, invalidValue);
+ } else {
+ showAt(comp, invalidValue);
+ }
+ }
+
+ private static void showAt(Component comp, InvalidValue invalidValue) {
+ 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());
+ }
+ }
+
+}
\ No newline at end of file