From c1006c0ad2add2337abadbbf14ddc2894f1db5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 26 Apr 2011 18:01:33 +0200 Subject: [PATCH] [Bug #1026] Fix bug In several places specific and generic allocations are divided disrupting the previous order. Reordering after the division. FEA: ItEr74S04BugFixing --- .../data/resourceload/LoadTimeLine.java | 23 +++++++++++++++++++ .../web/resourceload/ResourceLoadModel.java | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/resourceload/LoadTimeLine.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/resourceload/LoadTimeLine.java index 8227ae8d5..044c82d5f 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/resourceload/LoadTimeLine.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/resourceload/LoadTimeLine.java @@ -23,15 +23,38 @@ package org.zkoss.ganttz.data.resourceload; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.List; +import org.apache.commons.collections.ComparatorUtils; import org.apache.commons.lang.Validate; import org.joda.time.LocalDate; import org.zkoss.ganttz.util.Interval; public class LoadTimeLine { + @SuppressWarnings("unchecked") + private static final Comparator nullSafeComparator = ComparatorUtils + .nullLowComparator(ComparatorUtils.naturalComparator()); + + public static Comparator byStartAndEndDate() { + return new Comparator() { + + @Override + public int compare(LoadTimeLine o1, LoadTimeLine o2) { + int result = nullSafeComparator.compare(o1.getStartPeriod(), + o2.getStartPeriod()); + if (result == 0) { + return nullSafeComparator.compare(o1.getEndPeriod(), + o2.getEndPeriod()); + } + return result; + + } + }; + } + private final String conceptName; private final List loadPeriods; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java index 14a28cdda..44b519149 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java @@ -26,6 +26,7 @@ import static org.navalplanner.web.I18nHelper._; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; @@ -457,6 +458,7 @@ public class ResourceLoadModel implements IResourceLoadModel { result.addAll(buildSubLevels(criterion, ResourceAllocation.getOfType( GenericResourceAllocation.class, allocations))); result.add(buildRelatedSpecificAllocations(criterion, allocations)); + Collections.sort(result, LoadTimeLine.byStartAndEndDate()); return result; } @@ -507,6 +509,7 @@ public class ResourceLoadModel implements IResourceLoadModel { onlyGeneric(allocations))); result.addAll(buildTimeLinesForEachResource(criterion, onlySpecific(allocations), getCurrentTimeLineRole(order))); + Collections.sort(result, LoadTimeLine.byStartAndEndDate()); return result; } @@ -755,6 +758,7 @@ public class ResourceLoadModel implements IResourceLoadModel { onlySpecific(sortedByStartDate))); result.addAll(buildTimeLinesForEachCriterion(resource, onlyGeneric(sortedByStartDate))); + Collections.sort(result, LoadTimeLine.byStartAndEndDate()); return result; }