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 94a2ca75b..68e715bac 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 @@ -398,4 +398,12 @@ public abstract class TaskElement extends BaseEntity { return false; } + public TaskElement getTopMost() { + TaskElement result = this; + while (result.getParent() != null) { + result = result.getParent(); + } + return result; + } + } 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 0f7ecf64e..8c49fb741 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 @@ -262,8 +262,8 @@ public class ResourceLoadModel implements IResourceLoadModel { .byTask(sortedByStartDate); List secondLevel = new ArrayList(); for (Entry>> entry : byTask.entrySet()) { - LoadTimeLine timeLine = buildTimeLine(resource, entry.getKey() - .getName(), + Task task = entry.getKey(); + LoadTimeLine timeLine = buildTimeLine(resource, getTaskName(task), entry.getValue()); if (!timeLine.isEmpty()) { secondLevel.add(timeLine); @@ -272,6 +272,12 @@ public class ResourceLoadModel implements IResourceLoadModel { return secondLevel; } + private String getTaskName(Task task) { + TaskElement topMost = task.getTopMost(); + String prefix = topMost != task ? (topMost.getName() + " :: ") : ""; + return prefix + task.getName(); + } + private LoadTimeLine buildTimeLine(Collection criterions, Resource resource, List allocationsSortedByStartDate) {