|
21 | 21 |
|
22 | 22 | import java.util.ArrayList; |
23 | 23 | import java.util.Collection; |
| 24 | +import java.util.HashMap; |
24 | 25 | import java.util.HashSet; |
25 | 26 | import java.util.List; |
| 27 | +import java.util.Map; |
26 | 28 | import java.util.Set; |
27 | 29 |
|
28 | 30 | import org.cpsolver.coursett.model.RoomLocation; |
|
59 | 61 | import org.unitime.timetable.onlinesectioning.OnlineSectioningServer; |
60 | 62 | import org.unitime.timetable.onlinesectioning.basic.GetInfo; |
61 | 63 | import org.unitime.timetable.onlinesectioning.basic.GetAssignment.CourseSection; |
| 64 | +import org.unitime.timetable.onlinesectioning.model.XCourse; |
62 | 65 | import org.unitime.timetable.onlinesectioning.model.XCourseId; |
63 | 66 | import org.unitime.timetable.onlinesectioning.model.XCourseRequest; |
64 | 67 | import org.unitime.timetable.onlinesectioning.model.XEnrollment; |
@@ -450,6 +453,37 @@ public boolean sameLastName(Section current, Course course) { |
450 | 453 | return false; |
451 | 454 | } |
452 | 455 |
|
| 456 | + public static void setDependentCourses(CourseRequest cr, OnlineSectioningServer server) { |
| 457 | + if (cr == null || server == null) return; |
| 458 | + XStudent student = server.getStudent(cr.getStudent().getId()); |
| 459 | + if (student == null) return; |
| 460 | + Map<Long, Long> parentCourses = new HashMap<Long, Long>(); |
| 461 | + for (XRequest r: student.getRequests()) { |
| 462 | + if (r instanceof XCourseRequest) { |
| 463 | + for (XCourseId c: ((XCourseRequest)r).getCourseIds()) { |
| 464 | + XCourse course = server.getCourse(c.getCourseId()); |
| 465 | + if (course != null && course.getParentCourseId() != null) |
| 466 | + parentCourses.put(course.getCourseId(), course.getParentCourseId()); |
| 467 | + } |
| 468 | + } |
| 469 | + } |
| 470 | + if (!parentCourses.isEmpty()) { |
| 471 | + Map<Long, Course> courseTable = new HashMap<Long, Course>(); |
| 472 | + for (Request r: cr.getStudent().getRequests()) { |
| 473 | + if (r instanceof CourseRequest) { |
| 474 | + for (Course course: ((CourseRequest)r).getCourses()) |
| 475 | + courseTable.put(course.getId(), course); |
| 476 | + } |
| 477 | + } |
| 478 | + for (Map.Entry<Long, Long> e: parentCourses.entrySet()) { |
| 479 | + Course course = courseTable.get(e.getKey()); |
| 480 | + Course parent = courseTable.get(e.getValue()); |
| 481 | + if (course != null && parent != null) |
| 482 | + course.setParent(parent); |
| 483 | + } |
| 484 | + } |
| 485 | + } |
| 486 | + |
453 | 487 | public static CourseRequest convert(Assignment<Request, Enrollment> assignment, XCourseRequest request, OnlineSectioningServer server, WaitListMode wlMode, OnlineSectioningHelper helper) { |
454 | 488 | XCourseId dropCourse = (request.isWaitlist(wlMode) ? request.getWaitListSwapWithCourseOffering() : null); |
455 | 489 | return convert(assignment, request, dropCourse, server, wlMode, helper); |
|
0 commit comments