public CourseOffering getCourseOffering(String courseOfferingEid) throws IdNotFoundException { for(Iterator implIter = implList.iterator(); implIter.hasNext();) { CourseManagementService cm = (CourseManagementService)implIter.next(); try { log.debug("{} found course offering {}", cm, courseOfferingEid); return cm.getCourseOffering(courseOfferingEid); } catch (IdNotFoundException ide) { if(log.isDebugEnabled()) log.debug(cm + " could not locate course offering " + courseOfferingEid); } } throw new IdNotFoundException(courseOfferingEid, CanonicalCourse.class.getName()); }
Set<Membership> coMembers = cmService.getCourseOfferingMemberships(coEid); Set<Membership> equivMembers = new HashSet<Membership>(); Set<CourseOffering> equivalentCourseOfferings = cmService.getEquivalentCourseOfferings(coEid); for(Iterator<CourseOffering> iter = equivalentCourseOfferings.iterator(); iter.hasNext();) { CourseOffering equivCo = iter.next(); equivMembers.addAll(cmService.getCourseOfferingMemberships(equivCo.getEid()));
public Set<Membership> getCourseSetMemberships(String courseSetEid) throws IdNotFoundException { Set<Membership> resultSet = new HashSet<Membership>(); int exceptions = 0; for(Iterator implIter = implList.iterator(); implIter.hasNext();) { CourseManagementService cm = (CourseManagementService)implIter.next(); Set<Membership> set = null; try { log.debug("{} found course set {}", cm, courseSetEid); set = cm.getCourseSetMemberships(courseSetEid); } catch (IdNotFoundException ide) { exceptions++; if(log.isDebugEnabled()) log.debug(cm + " could not locate course set " + courseSetEid); } if(set != null) { resultSet.addAll(set); } } // If none of the impls could find the course set, throw an IdNotFoundException. if(exceptions == implList.size()) { throw new IdNotFoundException(courseSetEid, CourseSet.class.getName()); } return resultSet; }
public void processRow(String[] data, ProcessorState state) throws Exception { log.debug("Reconciling section {}", data[0]); if (cmService.isSectionDefined(data[0])) { updateSection(cmService.getSection(data[0]), data); } else { addSection(data); } }
public Section updateSection(Section section, String[] data) { log.debug("Updating Section {}", section.getEid()); section.setTitle(data[1]); section.setDescription(data[2]); section.setCategory(data[3]); if (StringUtils.isNotBlank(data[4]) && cmService.isSectionDefined(data[4])) { section.setParent(cmService.getSection(data[4])); } // Note: There's no way to change the course offering. This makes sense, though. if (cmService.isEnrollmentSetDefined(data[5])) { section.setEnrollmentSet(cmService.getEnrollmentSet(data[5])); } cmAdmin.updateSection(section); return section; }
try Section section = cms.getSection(providerCourseEid); Set memberships = cms.getSectionMemberships(providerCourseEid); if (memberships != null && memberships.size() > 0) CourseOffering co = cms.getCourseOffering(section.getCourseOfferingEid()); if (co != null) Set<Membership> coMemberships = cms.getCourseOfferingMemberships(section.getCourseOfferingEid()); if (coMemberships != null && coMemberships.size() > 0) CourseSet cSet = cms.getCourseSet(cSetEid); if (cSet != null) Set<Membership> cSetMemberships = cms.getCourseSetMemberships(cSetEid); if (cSetMemberships != null && cSetMemberships.size() > 0)
if (!cmService.isEnrollmentSetDefined(enrollmentSetEid)) { log.error("can't sync instructors no enrollment set exists with eid: {}", enrollmentSetEid); continue; EnrollmentSet enrollmentSet = cmService.getEnrollmentSet(enrollmentSetEid); enrollmentSet.setOfficialInstructors(new HashSet<>(newInstructorElements)); if (!cmService.isCourseOfferingDefined(courseOfferingEid)) { log.error("can't find course offering with eid: {}", courseOfferingEid); continue; Set<Membership> existingMembers = cmService.getCourseOfferingMemberships(courseOfferingEid); if (!cmService.isCourseSetDefined(courseSetEid)) { log.error("can't find course set with eid: {}", courseSetEid); continue; Set<Membership> existingMembers = cmService.getCourseSetMemberships(courseSetEid);
public void processRow(String[] data, ProcessorState state) throws Exception { log.debug("Reconciling course offering {}", data[0]); if (cmService.isCourseOfferingDefined(data[0])) { CourseOffering courseOffering = cmService.getCourseOffering(data[0]); log.debug("Updating CourseOffering {}", courseOffering.getEid()); AcademicSession newAcademicSession = cmService.getAcademicSession(data[1]); courseOffering.setTitle(data[2]); courseOffering.setDescription(data[3]); courseOffering.setStatus(data[4]); courseOffering.setAcademicSession(newAcademicSession); courseOffering.setStartDate(getDate(data[5])); courseOffering.setEndDate(getDate(data[6])); cmAdmin.updateCourseOffering(courseOffering); } else { String eid = data[0]; log.debug("Adding CourseOffering {}", eid); cmAdmin.createCourseOffering(data[0], data[2], data[3], data[4], data[1], data[7], getDate(data[5]), getDate(data[6])); } if (data.length > 8) { String courseSet = data[8]; if (courseSet != null && cmService.isCourseSetDefined(courseSet)) { cmAdmin.addCourseOfferingToCourseSet(courseSet, data[0]); } } }
CanonicalCourse cc; try { co = cmService.getCourseOffering(section.getCourseOfferingEid()); cc = cmService.getCanonicalCourse(co.getCanonicalCourseEid()); } catch (IdNotFoundException ide) { if(log.isDebugEnabled()) log.debug("Unable to find CM objects: " + ide); Set<CourseOffering> xListedCourseOfferings = cmService.getEquivalentCourseOfferings(co.getEid()); Set<CanonicalCourse> xListedCanonCourses = cmService.getEquivalentCanonicalCourses(cc.getEid()); CanonicalCourse xListCc = cmService.getCanonicalCourse(xListCcEid); csEids.addAll(xListCc.getCourseSetEids());
Set<String> officialInstructors = cmService.getInstructorsOfRecordIds(enrSet.getEid()); for(Iterator<String> iter = officialInstructors.iterator(); iter.hasNext();) { userRoleMap.put(iter.next(), officialInstructorRole); Set<Enrollment> enrollments = cmService.getEnrollments(section.getEnrollmentSet().getEid()); for(Enrollment enr : enrollments) { if(enr.isDropped()) { Set<Membership> memberships = cmService.getSectionMemberships(section.getEid()); for(Membership membership : memberships) {
public void processRow(String[] data, ProcessorState state) throws Exception { log.debug("Reconciling course set {}", data[0]); if (cmService.isCourseSetDefined(data[0])) { CourseSet courseSet = cmService.getCourseSet(data[0]); log.debug("Updating CourseSet {}", courseSet.getEid()); courseSet.setTitle(data[1]); courseSet.setDescription(data[2]); courseSet.setCategory(data[3]); if (StringUtils.isNotBlank(data[4]) && cmService.isCourseSetDefined(data[4])) { CourseSet parent = cmService.getCourseSet(data[4]); courseSet.setParent(parent); } cmAdmin.updateCourseSet(courseSet); } else { String eid = data[0]; log.debug("Adding CourseSet + " + eid); cmAdmin.createCourseSet(data[0], data[1], data[2], data[3], StringUtils.defaultIfEmpty(data[4], null)); } }
public void processRow(String[] data, ProcessorState state) throws Exception { log.debug("Reconciling canonical course {}", data[0]); if (cmService.isCanonicalCourseDefined(data[0])) { CanonicalCourse canonicalCourse = cmService.getCanonicalCourse(data[0]); log.debug("Updating CanonicalCourse {}", canonicalCourse.getEid()); canonicalCourse.setTitle(data[1]); canonicalCourse.setDescription(data[2]); cmAdmin.updateCanonicalCourse(canonicalCourse); } else { log.debug("Adding CanonicalCourse {}", data[0]); cmAdmin.createCanonicalCourse(data[0], data[1], data[2]); } if (data.length > 3) { String courseSet = data[3]; if (courseSet != null && cmService.isCourseSetDefined(courseSet)) { cmAdmin.addCanonicalCourseToCourseSet(courseSet, data[0]); } } }
public void postProcess(ProcessorState state) throws Exception { Map<String, List<String[]>> sectionMembers = getSectionMembers(state); for (String sectionEid : sectionMembers.keySet()) { if (!cmService.isSectionDefined(sectionEid)) { log.error("can't sync section memberships, no section with eid of {} found", sectionEid); continue; Set<Membership> existingMembers = cmService.getSectionMemberships(sectionEid);
/** * For crosslisted sites, the sections may belong to multiple academic sessions which have differing end dates. * If we find a date that isn't before the grace period, this site is not supposed to be removed / unpublished. * @return true if this site has an academic session with an end date after the expiration date */ private boolean isSiteCrosslistedWithEndDateAfterExpirationDate(String siteId, Date expirationDate) { String siteReference = siteService.siteReference(siteId); Set<String> providerIds = authzGroupService.getProviderIds(siteReference); for (String providerId : providerIds) { Section section = courseManagementService.getSection(providerId); if (section != null) { CourseOffering offering = courseManagementService.getCourseOffering(section.getCourseOfferingEid()); if (offering != null) { AcademicSession session = offering.getAcademicSession(); if (session != null) { Date endDate = session.getEndDate(); if (endDate != null && endDate.getTime() >= expirationDate.getTime()) { return true; } } } } } return false; }
public void postProcess(ProcessorState state) throws Exception { Map<String, List<String[]>> enrollmentMap = getEnrollmentMap(state); for (String enrollmentSetEid : enrollmentMap.keySet()) { if (!cmService.isEnrollmentSetDefined(enrollmentSetEid)) { log.error("can't sync enrollment for non-existent enrollment set with eid {}", enrollmentSetEid); continue; } List<String[]> newEnrollmentElements = enrollmentMap.get(enrollmentSetEid); Set<Enrollment> existingEnrollments = cmService.getEnrollments(enrollmentSetEid); Set<String> newUserEids = new HashSet<>(); for (String[] enrollmentElement : newEnrollmentElements) { newUserEids.add(enrollmentElement[1]); cmAdmin.addOrUpdateEnrollment(enrollmentElement[1], enrollmentSetEid, enrollmentElement[2], enrollmentElement[3], enrollmentElement[4]); } for (Enrollment existingEnr : existingEnrollments) { if (!newUserEids.contains(existingEnr.getUserId())) { // Drop this enrollment cmAdmin.removeEnrollment(existingEnr.getUserId(), enrollmentSetEid); } } } }
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); } } }
if(cmService.isCourseOfferingDefined(eid)) { courseOffering = updateCourseOffering(cmService.getCourseOffering(eid), element); } else { courseOffering = addCourseOffering(element);
public Set<Enrollment> getEnrollments(String enrollmentSetEid) throws IdNotFoundException { Set<Enrollment> resultSet = new HashSet<Enrollment>(); int exceptions =0; for(Iterator implIter = implList.iterator(); implIter.hasNext();) { CourseManagementService cm = (CourseManagementService)implIter.next(); Set<Enrollment> set = null; try { log.debug("{} found enrollment set {}", cm, enrollmentSetEid); set = cm.getEnrollments(enrollmentSetEid); } catch (IdNotFoundException ide) { if(log.isDebugEnabled()) log.debug(cm + " could not locate enrollment set " + enrollmentSetEid); } if(set != null) { resultSet.addAll(set); } } // If none of the impls could find the enrollment set, throw an IdNotFoundException. if(exceptions == implList.size()) { throw new IdNotFoundException(enrollmentSetEid, EnrollmentSet.class.getName()); } return resultSet; }
Map<String, String> sectionRoles = cms.findSectionRoles( currentUser.getEid() ); Section section = cms.getSection( sectionID ); if( portalUseSecTitlePreferredCategory.equals( section.getCategory() ) )
protected void reconcileCanonicalCourses(Document doc) { long start = System.currentTimeMillis(); if(log.isInfoEnabled()) log.info("Reconciling CanonicalCourses"); try { XPath docsPath = XPath.newInstance("/cm-data/canonical-courses/canonical-course"); List items = docsPath.selectNodes(doc); if(log.isDebugEnabled()) log.debug("Found " + items.size() + " canonical courses to reconcile"); // Add or update each of the canonical courses specified in the xml for(Iterator iter = items.iterator(); iter.hasNext();) { Element element = (Element)iter.next(); String eid = element.getChildText("eid"); if(log.isDebugEnabled()) log.debug("Reconciling canonical course " + eid); if(cmService.isCanonicalCourseDefined(eid)) { updateCanonicalCourse(cmService.getCanonicalCourse(eid), element); } else { addCanonicalCourse(element); } } } catch (JDOMException jde) { log.error(jde.getMessage()); } if(log.isInfoEnabled()) log.info("Finished reconciling CanonicalCourses in " + (System.currentTimeMillis()-start) + " ms"); }