Index: lams_central/src/java/org/lamsfoundation/lams/web/FindUserLessonsAction.java =================================================================== diff -u -r9f625d1d3925aab8738ae9e64b736cd40a47b015 -r5992a4450fd2767ea552a5d6de5f5b71dd1075bf --- lams_central/src/java/org/lamsfoundation/lams/web/FindUserLessonsAction.java (.../FindUserLessonsAction.java) (revision 9f625d1d3925aab8738ae9e64b736cd40a47b015) +++ lams_central/src/java/org/lamsfoundation/lams/web/FindUserLessonsAction.java (.../FindUserLessonsAction.java) (revision 5992a4450fd2767ea552a5d6de5f5b71dd1075bf) @@ -69,32 +69,27 @@ } if (query != null) { - Organisation rootOrg = (Organisation) userManagementService.findById(Organisation.class, courseID); + Organisation group = (Organisation) userManagementService.findById(Organisation.class, courseID); - Set orgSet = getOrgSet(rootOrg); + Set users = getUserSet(query, group); - Set userSet = getUserSet(query, orgSet); - Map> userLessonsMap = new HashMap>(); - for (User user : userSet) { + for (User user : users) { - for (Organisation org : orgSet) { + Set lessons = userLessonsMap.get(user); + + boolean addLessonsToMap = false; + if (lessons == null) { + addLessonsToMap = true; + lessons = new HashSet(); + } - // get all lessons for 'user' in 'org' - Map lessons = lessonService.getLessonsByOrgAndUser(user.getUserId(), org - .getOrganisationId()); + // get all lessons for 'user' in 'group' and add to lessons map + lessons.addAll(lessonService.getLessonsByGroupAndUser(user.getUserId(), group + .getOrganisationId()).values()); - // add lessons to map - Set userLessons = userLessonsMap.get(user); - - if (userLessons == null) { - userLessons = new HashSet(); - } - - userLessons.addAll(lessons.values()); - - userLessonsMap.put(user, userLessons); - + if (addLessonsToMap) { + userLessonsMap.put(user, lessons); } } @@ -116,18 +111,16 @@ return orgSet; } - private Set getUserSet(String query, Set orgSet) { + private Set getUserSet(String query, Organisation rootOrg) { Set userSet = new HashSet(); String[] tokens = query.trim().split("\\s+"); // Separated by "whitespace" - // subgroups - for (Organisation org : orgSet) { - for (String token : tokens) { - userSet.addAll(userManagementService.searchUserSingleTerm(token, org.getOrganisationId())); - } + for (String token : tokens) { + userSet.addAll(userManagementService.searchUserSingleTerm(token, rootOrg.getOrganisationId(), true)); } + return userSet; } @@ -139,7 +132,7 @@ Organisation rootOrg = (Organisation) userManagementService.findById(Organisation.class, courseID); - Set userSet = getUserSet(query, getOrgSet(rootOrg)); + Set userSet = getUserSet(query, rootOrg); List list = new LinkedList();