diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java index 1bf8b106e..c0c13d9ab 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java @@ -72,6 +72,8 @@ public interface IResourceLoadModel { List getAllResourcesList(); + List getAllCriteriaList(); + int getPageSize(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java index 77ce43e45..138f12415 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java @@ -341,22 +341,44 @@ public class ResourceLoadController implements Composer { Combobox filterByNameCombo = resourcesLoadPanel.getPaginationFilterCombobox(); filterByNameCombo.getChildren().clear(); List resources = resourceLoadModel.getAllResourcesList(); - int size = resources.size(); + List criteria = resourceLoadModel.getAllCriteriaList(); + int size; + if(currentFilterByResources) { + size = resources.size(); + } + else { + size = criteria.size(); + } int pageSize = resourceLoadModel.getPageSize(); if(size > pageSize) { int position = 0; while(position < size) { - String firstName = resources.get(position).getName(); + String firstName; String lastName; int newPosition = position + pageSize; - if(newPosition - 1 < size) { - lastName = resources.get(newPosition - 1) - .getName(); + if(currentFilterByResources) { + firstName = resources.get(position).getName(); + if(newPosition - 1 < size) { + lastName = resources.get(newPosition - 1) + .getName(); + } + else { + lastName = resources.get(size - 1) + .getName(); + } } else { - lastName = resources.get(size - 1) - .getName(); + Criterion criterion = criteria.get(position); + firstName = criterion.getType().getName() + ": " + criterion.getName(); + if(newPosition - 1 < size) { + criterion = criteria.get(newPosition - 1); + lastName = criterion.getType().getName() + ": " + criterion.getName(); + } + else { + criterion = criteria.get(size - 1); + lastName = criterion.getType().getName() + ": " + criterion.getName(); + } } Comboitem item = new Comboitem(); 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 18d3d8d48..f58c7273e 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 @@ -115,6 +115,10 @@ public class ResourceLoadModel implements IResourceLoadModel { */ private List resourcesToShowList = new ArrayList(); + /** + * Contains the criteria to be shown when specified manually using + * the Bandbox + */ private List criteriaToShowList = new ArrayList(); private Date initDateFilter; @@ -136,6 +140,11 @@ public class ResourceLoadModel implements IResourceLoadModel { */ private List allResourcesList; + /** + * Contains all the resources which have to be filtered page by page + */ + List allCriteriaList; + @Override @Transactional(readOnly = true) public void initGlobalView(boolean filterByResources) { @@ -215,7 +224,7 @@ public class ResourceLoadModel implements IResourceLoadModel { .findGenericAllocationsBySomeCriterion(criteriaToShowList, initDateFilter, endDateFilter); } if (filter()) { - List criterions = new ArrayList(); + allCriteriaList = new ArrayList(); List generics = new ArrayList(); List tasks = justTasks(filterBy .getAllChildrenAssociatedTaskElements()); @@ -224,13 +233,17 @@ public class ResourceLoadModel implements IResourceLoadModel { List> listAllocations = new ArrayList>( task.getSatisfiedResourceAllocations()); for (GenericResourceAllocation generic : (onlyGeneric(listAllocations))) { - criterions.addAll(generic.getCriterions()); + allCriteriaList.addAll(generic.getCriterions()); } } + allCriteriaList = Criterion.sortByTypeAndName(allCriteriaList); return resourceAllocationDAO - .findGenericAllocationsBySomeCriterion(criterions, initDateFilter, endDateFilter); + .findGenericAllocationsBySomeCriterion(allCriteriaList, initDateFilter, endDateFilter); } else { - return resourceAllocationDAO.findGenericAllocationsByCriterion(initDateFilter, endDateFilter); + Map> toReturn = + resourceAllocationDAO.findGenericAllocationsByCriterion(initDateFilter, endDateFilter); + allCriteriaList = Criterion.sortByTypeAndName(toReturn.keySet()); + return toReturn; } } @@ -252,6 +265,11 @@ public class ResourceLoadModel implements IResourceLoadModel { return allResourcesList; } + @Override + public List getAllCriteriaList() { + return allCriteriaList; + } + @Override public int getPageSize() { return pageSize; @@ -292,9 +310,7 @@ public class ResourceLoadModel implements IResourceLoadModel { private List groupsFor( Map> genericAllocationsByCriterion) { List result = new ArrayList(); - List criterions = Criterion - .sortByTypeAndName(genericAllocationsByCriterion.keySet()); - for (Criterion criterion : criterions) { + for (Criterion criterion : allCriteriaList) { List allocations = ResourceAllocation .sortedByStartDate(genericAllocationsByCriterion .get(criterion));