diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/EntitySequence.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/EntitySequence.java index 98690d358..3528d4ae6 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/EntitySequence.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/EntitySequence.java @@ -136,9 +136,9 @@ public class EntitySequence extends BaseEntity { && (numberOfDigits <= MAX_NUMBER_OF_DIGITS)) { this.numberOfDigits = numberOfDigits; } else { - throw new IllegalArgumentException(I18nHelper._( - "number of digits must be between {0} and {1}", - MIN_NUMBER_OF_DIGITS, MAX_NUMBER_OF_DIGITS)); + throw new IllegalArgumentException( + "number of digits must be between " + MIN_NUMBER_OF_DIGITS + + " and " + MAX_NUMBER_OF_DIGITS); } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/i18n/I18nHelper.java b/navalplanner-business/src/main/java/org/navalplanner/business/i18n/I18nHelper.java index 144a75dd3..17446311e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/i18n/I18nHelper.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/i18n/I18nHelper.java @@ -21,44 +21,22 @@ package org.navalplanner.business.i18n; -import java.util.Locale; - -import org.xnap.commons.i18n.I18n; -import org.xnap.commons.i18n.I18nFactory; +/** + * This class provides a function to mark strings to be translated. Real + * translation have to be done in webapp module depending on user language and + * not done here depending on server language. + * + * @author Manuel Rego Casasnovas + */ public class I18nHelper { private I18nHelper() { } - public static I18n getI18n() { - return I18nFactory.getI18n(I18nHelper.class, Locale.getDefault(), - org.xnap.commons.i18n.I18nFactory.FALLBACK); - } - public static String _(String text) { - return getI18n().tr(text); + return text; } - public static String _(String text, Object o1) { - return getI18n().tr(text, o1); - } - - public static String _(String text, Object o1, Object o2) { - return getI18n().tr(text, o1, o2); - } - - public static String _(String text, Object o1, Object o2, Object o3) { - return getI18n().tr(text, o1, o2, o3); - } - - public static String _(String text, Object o1, Object o2, Object o3, - Object o4) { - return getI18n().tr(text, o1, o2, o3, o4); - } - - public static String _(String text, Object[] objects) { - return getI18n().tr(text, objects); - } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/CriterionRequirementHandler.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/CriterionRequirementHandler.java index 4af716be8..9dddb6efe 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/CriterionRequirementHandler.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/CriterionRequirementHandler.java @@ -535,10 +535,8 @@ public abstract class CriterionRequirementHandler { propagateDirectCriterionRequirementAddition(orderElement, newRequirement); } else { - final Criterion criterion = newRequirement.getCriterion(); - throw new IllegalStateException(_( - " The {0} already exist into other task", - criterion.getName())); + throw new IllegalStateException( + _("The criterion already exist into other task")); } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java index 7f7f2ea0f..0e0583c83 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/HoursGroup.java @@ -39,7 +39,6 @@ import org.hibernate.validator.Valid; import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.daos.IIntegrationEntityDAO; -import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.requirements.entities.CriterionRequirement; import org.navalplanner.business.requirements.entities.DirectCriterionRequirement; import org.navalplanner.business.requirements.entities.IndirectCriterionRequirement; @@ -255,15 +254,11 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, public void addCriterionRequirement(CriterionRequirement requirement) { if (!isValidResourceType(requirement)) { throw new IllegalStateException( - _( - " The criterion {0} can not be assigned to this hoursGroup because its resource type is diferent.", - requirement.getCriterion().getName())); + _("The criterion can not be assigned to this hoursGroup because its resource type is diferent")); } if (existSameCriterionRequirement(requirement)) { throw new IllegalStateException( - _( - " The criterion {0} can not be assigned to this hoursGroup because it already exist into the hoursGroup.", - requirement.getCriterion().getName())); + _("The criterion can not be assigned to this hoursGroup because it already exist into the hoursGroup")); } requirement.setHoursGroup(this); @@ -411,27 +406,4 @@ public class HoursGroup extends IntegrationEntity implements Cloneable, return true; } - public static void checkConstraintHoursGroupUniqueCode(OrderElement order) { - HoursGroup repeatedHoursGroup; - - if (order instanceof OrderLineGroup) { - repeatedHoursGroup = ((OrderLineGroup) order).findRepeatedHoursGroupCode(); - if (repeatedHoursGroup != null) { - throw new ValidationException(_( - "Repeated Hours Group code {0} in Project {1}", - repeatedHoursGroup.getCode(), repeatedHoursGroup - .getParentOrderLine().getName())); - } - } - - repeatedHoursGroup = Registry.getHoursGroupDAO() - .findRepeatedHoursGroupCodeInDB(order.getHoursGroups()); - if (repeatedHoursGroup != null) { - throw new ValidationException(_( - "Repeated Hours Group code {0} in Project {1}", - repeatedHoursGroup.getCode(), repeatedHoursGroup - .getParentOrderLine().getName())); - } - } - } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index 05092d6f8..22dbf079e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -1049,10 +1049,9 @@ public abstract class OrderElement extends IntegrationEntity implements Validate.notNull(qualityForm); for (TaskQualityForm taskQualityForm : getTaskQualityForms()) { if (qualityForm.equals(taskQualityForm.getQualityForm())) { - throw new ValidationException(new InvalidValue(_( - "{0} already exists", qualityForm.getName()), - QualityForm.class, "name", qualityForm.getName(), - qualityForm)); + throw new ValidationException(new InvalidValue( + _("Quality form already exists"), QualityForm.class, + "name", qualityForm.getName(), qualityForm)); } } } @@ -1338,29 +1337,6 @@ public abstract class OrderElement extends IntegrationEntity implements } } - public static void checkConstraintOrderUniqueCode(OrderElement order) { - OrderElement repeatedOrder; - - // Check no code is repeated in this order - if (order instanceof OrderLineGroup) { - repeatedOrder = ((OrderLineGroup) order).findRepeatedOrderCode(); - if (repeatedOrder != null) { - throw new ValidationException(_( - "Repeated Project code {0} in Project {1}", - repeatedOrder.getCode(), repeatedOrder.getName())); - } - } - - // Check no code is repeated within the DB - repeatedOrder = Registry.getOrderElementDAO() - .findRepeatedOrderCodeInDB(order); - if (repeatedOrder != null) { - throw new ValidationException(_( - "Repeated Project code {0} in Project {1}", - repeatedOrder.getCode(), repeatedOrder.getName())); - } - } - public void setCodeAutogenerated(Boolean codeAutogenerated) { if (getOrder().equals(this)) { super.setCodeAutogenerated(codeAutogenerated); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java index 5c1056771..9c3e2ad80 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java @@ -165,9 +165,9 @@ public class SchedulingState { this(type); for (SchedulingState each : children) { if (!each.isRoot()) { - throw new IllegalArgumentException(_( - "{0} is already child of another {1}", each, - SchedulingState.class.getSimpleName())); + throw new IllegalArgumentException(each + + " is already child of another " + + SchedulingState.class.getSimpleName()); } add(each); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java b/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java index 226935e40..391bb446c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/scenarios/entities/Scenario.java @@ -21,8 +21,6 @@ package org.navalplanner.business.scenarios.entities; -import static org.navalplanner.business.i18n.I18nHelper._; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -174,7 +172,7 @@ public class Scenario extends BaseEntity implements IHumanIdentifiable { } public Scenario newDerivedScenario() { - Scenario result = new Scenario(_("Derived from {0}", name), this); + Scenario result = new Scenario("Derived from " + name, this); for (Order order : orders.keySet()) { result.addOrder(order, orders.get(order)); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java index dbd5cb195..ed956cb9e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java @@ -293,7 +293,10 @@ public class ConfigurationController extends GenericForwardComposer { seq.setNumberOfDigits(digitsBox.getValue()); } } catch (IllegalArgumentException e) { - throw new WrongValueException(digitsBox, e.getMessage()); + throw new WrongValueException(digitsBox, _( + "number of digits must be between {0} and {1}", + EntitySequence.MIN_NUMBER_OF_DIGITS, + EntitySequence.MAX_NUMBER_OF_DIGITS)); } } } @@ -599,8 +602,10 @@ public class ConfigurationController extends GenericForwardComposer { try { entitySequence.setNumberOfDigits(value); } catch (IllegalArgumentException e) { - throw new WrongValueException(tempIntbox, e - .getMessage()); + throw new WrongValueException(tempIntbox, _( + "number of digits must be between {0} and {1}", + EntitySequence.MIN_NUMBER_OF_DIGITS, + EntitySequence.MAX_NUMBER_OF_DIGITS)); } } }); @@ -696,7 +701,10 @@ public class ConfigurationController extends GenericForwardComposer { try { sequence.setNumberOfDigits(numberOfDigits); } catch (IllegalArgumentException e) { - throw new WrongValueException(comp, e.getMessage()); + throw new WrongValueException(comp, _( + "number of digits must be between {0} and {1}", + EntitySequence.MIN_NUMBER_OF_DIGITS, + EntitySequence.MAX_NUMBER_OF_DIGITS)); } } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java index bc1c9f727..45624d794 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateModel.java @@ -21,7 +21,7 @@ package org.navalplanner.web.common; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.ArrayList; import java.util.Date; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/exceptionDays/CalendarExceptionTypeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/exceptionDays/CalendarExceptionTypeModel.java index ac5eb2256..00aad086e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/exceptionDays/CalendarExceptionTypeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/exceptionDays/CalendarExceptionTypeModel.java @@ -18,7 +18,7 @@ */ package org.navalplanner.web.exceptionDays; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.HashSet; import java.util.List; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java index 333c0f705..885993a16 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java @@ -21,7 +21,7 @@ package org.navalplanner.web.orders; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.List; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 32602c80a..0156eb174 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -43,6 +43,7 @@ import org.navalplanner.business.common.BaseEntity; import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.IntegrationEntity; +import org.navalplanner.business.common.Registry; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.entities.Configuration; import org.navalplanner.business.common.entities.EntityNameEnum; @@ -544,8 +545,8 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { } private void saveOnTransaction(boolean newOrderVersionNeeded) { - Order.checkConstraintOrderUniqueCode(order); - HoursGroup.checkConstraintHoursGroupUniqueCode(order); + checkConstraintOrderUniqueCode(order); + checkConstraintHoursGroupUniqueCode(order); reattachCalendar(); reattachCriterions(); @@ -577,6 +578,53 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { deleteOrderElementWithoutParent(); } + private static void checkConstraintOrderUniqueCode(OrderElement order) { + OrderElement repeatedOrder; + + // Check no code is repeated in this order + if (order instanceof OrderLineGroup) { + repeatedOrder = ((OrderLineGroup) order).findRepeatedOrderCode(); + if (repeatedOrder != null) { + throw new ValidationException(_( + "Repeated Project code {0} in Project {1}", + repeatedOrder.getCode(), repeatedOrder.getName())); + } + } + + // Check no code is repeated within the DB + repeatedOrder = Registry.getOrderElementDAO() + .findRepeatedOrderCodeInDB(order); + if (repeatedOrder != null) { + throw new ValidationException(_( + "Repeated Project code {0} in Project {1}", + repeatedOrder.getCode(), repeatedOrder.getName())); + } + } + + private static void checkConstraintHoursGroupUniqueCode(Order order) { + HoursGroup repeatedHoursGroup; + + if (order instanceof OrderLineGroup) { + repeatedHoursGroup = ((OrderLineGroup) order) + .findRepeatedHoursGroupCode(); + if (repeatedHoursGroup != null) { + throw new ValidationException(_( + "Repeated Hours Group code {0} in Project {1}", + repeatedHoursGroup.getCode(), repeatedHoursGroup + .getParentOrderLine().getName())); + } + } + + repeatedHoursGroup = Registry.getHoursGroupDAO() + .findRepeatedHoursGroupCodeInDB(order.getHoursGroups()); + if (repeatedHoursGroup != null) { + throw new ValidationException(_( + "Repeated Hours Group code {0} in Project {1}", + repeatedHoursGroup.getCode(), repeatedHoursGroup + .getParentOrderLine().getName())); + } + } + private void createAndSaveNewOrderVersion(Scenario currentScenario, OrderVersion newOrderVersion) { OrderVersion previousOrderVersion = currentScenario diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/assigntemplates/TemplateFinderPopup.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/assigntemplates/TemplateFinderPopup.java index 90fb6c008..df466489e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/assigntemplates/TemplateFinderPopup.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/assigntemplates/TemplateFinderPopup.java @@ -20,7 +20,7 @@ */ package org.navalplanner.web.orders.assigntemplates; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import org.apache.commons.lang.Validate; import org.navalplanner.business.templates.entities.OrderElementTemplate; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignCommand.java index d07ee1829..e86743f88 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignCommand.java @@ -20,7 +20,7 @@ */ package org.navalplanner.web.planner.reassign; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import static org.zkoss.ganttz.util.LongOperationFeedback.and; import java.util.ArrayList; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignController.java index 9e10a150e..35605e9a8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/reassign/ReassignController.java @@ -20,7 +20,7 @@ */ package org.navalplanner.web.planner.reassign; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.Arrays; import java.util.Collections; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java index 98c4d7ffe..27923f055 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java @@ -21,7 +21,7 @@ package org.navalplanner.web.templates; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.ArrayList; import java.util.HashMap; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/TemplatesTree.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/TemplatesTree.java index aa8712bb6..4668cc2d0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/TemplatesTree.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/TemplatesTree.java @@ -20,7 +20,7 @@ */ package org.navalplanner.web.templates; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import org.navalplanner.business.templates.entities.OrderElementTemplate; import org.navalplanner.business.templates.entities.OrderLineTemplate; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java index bcb8eb9af..2018a55fd 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workreports/WorkReportTypeModel.java @@ -21,7 +21,7 @@ package org.navalplanner.web.workreports; -import static org.navalplanner.business.i18n.I18nHelper._; +import static org.navalplanner.web.I18nHelper._; import java.util.ArrayList; import java.util.HashMap; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java index 11ee8417d..bc46887cb 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/ws/common/impl/OrderElementConverter.java @@ -316,7 +316,7 @@ public final class OrderElementConverter { .addCriterionRequirement(DirectCriterionRequirement .create(criterion)); } catch (IllegalStateException e) { - throw new ValidationException(e.getMessage()); + throw new ValidationException(_(e.getMessage())); } } } else { // criterionRequirementDTO instanceof