From df9982730967bdeba7c9373cdb0b9febce1cc310 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 22 Oct 2015 08:22:33 +0200 Subject: [PATCH] OO-1735: use a hashmap which scale better with the number of courses --- .../AbstractBusinessGroupListController.java | 12 +++++++++++- .../org/olat/group/ui/main/BGTableItem.java | 18 +++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index 5dad6efcba8..67e1dee9b9f 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -1108,6 +1108,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr } } List<BGRepositoryEntryRelation> resources = businessGroupService.findRelationToRepositoryEntries(groupKeysWithRelations, 0, -1); + //find offers List<Long> groupWithOfferKeys = new ArrayList<Long>(groups.size()); for(BusinessGroupView view:groups) { @@ -1131,6 +1132,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr } List<BGTableItem> items = new ArrayList<BGTableItem>(); + Map<Long, BGTableItem> groupKeyToItems = new HashMap<>(); for(BusinessGroupView group:groups) { Long oresKey = group.getResource().getKey(); List<PriceMethodBundle> accessMethods = null; @@ -1150,13 +1152,21 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr markLink.setIconLeftCSS(marked ? Mark.MARK_CSS_LARGE : Mark.MARK_ADD_CSS_LARGE); BGTableItem tableItem = new BGTableItem(group, markLink, marked, membership, allowLeave, allowDelete, accessMethods); - tableItem.setUnfilteredRelations(resources); + //tableItem.setUnfilteredRelations(resources); items.add(tableItem); markLink.setUserObject(tableItem); if(group.getNumOfValidOffers() > 0l) { addAccessLink(tableItem); } + groupKeyToItems.put(group.getKey(), tableItem); + } + + for(BGRepositoryEntryRelation relation:resources) { + BGTableItem tableItem = groupKeyToItems.get(relation.getGroupKey()); + if(tableItem != null) { + tableItem.addRelation(relation); + } } groupTableModel.setObjects(items); diff --git a/src/main/java/org/olat/group/ui/main/BGTableItem.java b/src/main/java/org/olat/group/ui/main/BGTableItem.java index a32028f803c..65bdda339f6 100644 --- a/src/main/java/org/olat/group/ui/main/BGTableItem.java +++ b/src/main/java/org/olat/group/ui/main/BGTableItem.java @@ -216,19 +216,11 @@ public class BGTableItem { return relations; } - /** - * Give the item a list of relations, it found alone which are its own - * @param resources - */ - public void setUnfilteredRelations(List<BGRepositoryEntryRelation> resources) { - relations = new ArrayList<RepositoryEntryShort>(3); - for(BGRepositoryEntryRelation resource:resources) { - if(businessGroup.getKey().equals(resource.getGroupKey())) { - relations.add(new REShort(resource)); - if(relations.size() >= 3) { - return; - } - } + public void addRelation(BGRepositoryEntryRelation resource) { + if(relations == null) { + relations = new ArrayList<RepositoryEntryShort>(3); + } else if(relations.size() < 3) { + relations.add(new REShort(resource)); } } -- GitLab