From bae087dff9aa71f2feb8d66406a8249e9ee04ec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 22 Jun 2011 13:38:02 +0200 Subject: [PATCH] [Bug #1096] Fix bug Consider also the deadline when calculating the initial zoom level. FEA: ItEr75S04BugFixing --- .../planner/entities/TaskElement.java | 22 +++++++++++++++---- .../web/planner/order/OrderPlanningModel.java | 7 +++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java index bedb8000d..95eb1e33e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/TaskElement.java @@ -21,6 +21,7 @@ package org.navalplanner.business.planner.entities; +import static java.util.Arrays.asList; import static org.navalplanner.business.workingday.EffortDuration.zero; import java.math.BigDecimal; @@ -93,15 +94,28 @@ public abstract class TaskElement extends BaseEntity { return result; } - public static Comparator getByEndDateComparator() { - Comparator result = new Comparator() { + public static Comparator getByEndAndDeadlineDateComparator() { + return new Comparator() { @Override public int compare(TaskElement o1, TaskElement o2) { - return o1.getEndDate().compareTo(o2.getEndDate()); + return o1.getBiggestAmongEndOrDeadline().compareTo( + o2.getBiggestAmongEndOrDeadline()); } + }; - return result; + } + + /** + * @returns the biggest one among the deadline (if exists) or the end date. + */ + @SuppressWarnings("unchecked") + public LocalDate getBiggestAmongEndOrDeadline() { + if (this.getDeadline() != null) { + return Collections.max(asList(this.getDeadline(), + this.getEndAsLocalDate())); + } + return this.getEndAsLocalDate(); } protected static T create(T taskElement, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index 667bed773..994e3d24b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -216,11 +216,10 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { TaskElement .getByStartDateComparator()); TaskElement latest = Collections.max(configuration.getData(), - TaskElement.getByEndDateComparator()); + TaskElement.getByEndAndDeadlineDateComparator()); - LocalDate startDate = LocalDate.fromDateFields(earliest - .getStartDate()); - LocalDate endDate = LocalDate.fromDateFields(latest.getEndDate()); + LocalDate startDate = earliest.getStartAsLocalDate(); + LocalDate endDate = latest.getBiggestAmongEndOrDeadline(); return ZoomLevel.getDefaultZoomByDates(startDate, endDate); }