protected void updateCourseOfferingMembers(Element membersElement, CourseOffering courseOffering) { Set existingMembers = cmService.getCourseOfferingMemberships(courseOffering.getEid()); // Build a map of existing member userEids to Memberships Map existingMemberMap = new HashMap(existingMembers.size()); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); existingMemberMap.put(member.getUserId(), member); } // Keep track of the new members userEids, and add/update them Set newMembers = new HashSet(); List memberElements = membersElement.getChildren("member"); for(Iterator iter = memberElements.iterator(); iter.hasNext();) { Element memberElement = (Element)iter.next(); String userEid = memberElement.getAttributeValue("userEid"); String role = memberElement.getAttributeValue("role"); String status = memberElement.getAttributeValue("status"); newMembers.add(cmAdmin.addOrUpdateCourseOfferingMembership(userEid, role, courseOffering.getEid(), status)); } // For everybody not in the newMembers set, remove their memberships existingMembers.removeAll(newMembers); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); cmAdmin.removeCourseOfferingMembership(member.getUserId(), courseOffering.getEid()); } }
private void addMemberRoles(Map<String, String> userRoleMap, Set<Membership>coMembers) { for(Iterator<Membership> iter = coMembers.iterator(); iter.hasNext();) { Membership membership = iter.next(); if(userRoleMap.containsKey(membership.getUserId())) { // Don't override existing roles in the map. } else { String sakaiRole = convertRole(membership.getRole()); if(sakaiRole != null) { userRoleMap.put(membership.getUserId(), sakaiRole); } } } }
protected void updateSectionMembers(Element membersElement, Section section) { Set existingMembers = cmService.getSectionMemberships(section.getEid()); // Build a map of existing member userEids to Memberships Map existingMemberMap = new HashMap(existingMembers.size()); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); existingMemberMap.put(member.getUserId(), member); } // Keep track of the new members userEids, and add/update them Set newMembers = new HashSet(); List memberElements = membersElement.getChildren("member"); for(Iterator iter = memberElements.iterator(); iter.hasNext();) { Element memberElement = (Element)iter.next(); String userEid = memberElement.getAttributeValue("userEid"); String role = memberElement.getAttributeValue("role"); String status = memberElement.getAttributeValue("status"); newMembers.add(cmAdmin.addOrUpdateSectionMembership(userEid, role, section.getEid(), status)); } // For everybody not in the newMembers set, remove their memberships existingMembers.removeAll(newMembers); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); cmAdmin.removeSectionMembership(member.getUserId(), section.getEid()); } }
protected void updateCourseSetMembers(Element membersElement, CourseSet courseSet) { Set existingMembers = cmService.getCourseSetMemberships(courseSet.getEid()); // Build a map of existing member userEids to Memberships Map existingMemberMap = new HashMap(existingMembers.size()); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); existingMemberMap.put(member.getUserId(), member); } // Keep track of the new members userEids, and add/update them Set newMembers = new HashSet(); List memberElements = membersElement.getChildren("member"); for(Iterator iter = memberElements.iterator(); iter.hasNext();) { Element memberElement = (Element)iter.next(); String userEid = memberElement.getAttributeValue("userEid"); String role = memberElement.getAttributeValue("role"); String status = memberElement.getAttributeValue("status"); newMembers.add(cmAdmin.addOrUpdateCourseSetMembership(userEid, role, courseSet.getEid(), status)); } // For everybody not in the newMembers set, remove their memberships existingMembers.removeAll(newMembers); for(Iterator iter = existingMembers.iterator(); iter.hasNext();) { Membership member = (Membership)iter.next(); cmAdmin.removeCourseSetMembership(member.getUserId(), courseSet.getEid()); } }
public void postProcess(ProcessorState state) throws Exception { Map<String, List<String[]>> membersMap = getMembersMap(state); for (String courseOfferingEid : membersMap.keySet()) { if (!cmService.isCourseOfferingDefined(courseOfferingEid)) { log.error("can't find course offering with eid: {}", courseOfferingEid); continue; } Set<Membership> existingMembers = cmService.getCourseOfferingMemberships(courseOfferingEid); // Build a map of existing member userEids to Memberships Map<String, Membership> existingMemberMap = new HashMap<>(existingMembers.size()); for (Membership member : existingMembers) { existingMemberMap.put(member.getUserId(), member); } // Keep track of the new members userEids, and add/update them Set<Membership> newMembers = new HashSet<>(); List<String[]> memberElements = membersMap.get(courseOfferingEid); for (String[] member : memberElements) { newMembers.add(cmAdmin.addOrUpdateCourseOfferingMembership(member[1], member[2], courseOfferingEid, member[3])); } // For everybody not in the newMembers set, remove their memberships existingMembers.removeAll(newMembers); for (Membership member : existingMembers) { cmAdmin.removeCourseOfferingMembership(member.getUserId(), courseOfferingEid); } } }
public void postProcess(ProcessorState state) throws Exception { Map<String, List<String[]>> membersMap = getMembersMap(state); for (String courseOfferingEid : membersMap.keySet()) { if (!cmService.isCourseOfferingDefined(courseOfferingEid)) { log.error("can't find course offering with eid: {}", courseOfferingEid); continue; } Set<Membership> existingMembers = cmService.getCourseOfferingMemberships(courseOfferingEid); // Build a map of existing member userEids to Memberships Map<String, Membership> existingMemberMap = new HashMap<>(existingMembers.size()); for (Membership member : existingMembers) { existingMemberMap.put(member.getUserId(), member); } // Keep track of the new members userEids, and add/update them Set<Membership> newMembers = new HashSet<>(); List<String[]> memberElements = membersMap.get(courseOfferingEid); for (String[] member : memberElements) { newMembers.add(cmAdmin.addOrUpdateCourseOfferingMembership(member[1], member[2], courseOfferingEid, member[3])); } // For everybody not in the newMembers set, remove their memberships existingMembers.removeAll(newMembers); for (Membership member : existingMembers) { cmAdmin.removeCourseOfferingMembership(member.getUserId(), courseOfferingEid); } } }
/** * Collect all member users data in one call * * @param memberships * @return */ public static Map<String, User> getEidUserMapFromCollection(Collection<Object> cObjects) { Set<String> rvEids = new HashSet<String>(); for (Object cObject : cObjects) { if (cObject instanceof Enrollment) { rvEids.add(((Enrollment) cObject).getUserId()); } else if (cObject instanceof Membership) { rvEids.add(((Membership) cObject).getUserId()); } else if (cObject instanceof Member) { rvEids.add(((Member) cObject).getUserEid()); } } Map<String, User> eidToUserMap = new HashMap<String, User>(); List<User> rvUsers = UserDirectoryService.getUsersByEids(rvEids); for (User user : rvUsers) { eidToUserMap.put(user.getEid(), user); } return eidToUserMap; }