From 0e118ea1b6e4d19b09aec0aa02e2aeeb6ecdf75e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 6 Jun 2011 19:19:32 +0200 Subject: [PATCH] [Bug #1084] Fix bug Use floating point arithmetic if the fraction overflows FEA: ItEr74S04BugFixing --- .../navalplanner/web/planner/TaskElementAdapter.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java index 313a0d125..de8ced16b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/TaskElementAdapter.java @@ -328,8 +328,14 @@ public class TaskElementAdapter implements ITaskElementAdapter { return Duration.ZERO; } Fraction fraction = fractionOfWorkingDayFor(effortDuration); - return new Duration(fraction.multiplyBy( - Fraction.getFraction(DAY_MILLISECONDS, 1)).intValue()); + try { + return new Duration(fraction.multiplyBy( + Fraction.getFraction(DAY_MILLISECONDS, 1)).intValue()); + } catch (ArithmeticException e) { + // if fraction overflows use floating point arithmetic + return new Duration( + (int) (fraction.doubleValue() * DAY_MILLISECONDS)); + } } @SuppressWarnings("unchecked")