public void addComponent(HtmlAgilityPack.HtmlNode row) { RowInterpreter interpreter = new RowInterpreter(row); if (!interpreter.isCancelled()) { if (interpreter.isNewCourse()) { if (course != null && section != null) { course.addSection(section); courseList.Add(course); } // new course course = new Course(); course.addCourseID(interpreter.getCourseID()); course.addSectionCode(interpreter.getSectionCode()); course.addTitle(interpreter.getTitle()); // new section AND add it to course section = new Section(); section.addSectionID(interpreter.getSectionID()); section.addTime(interpreter.getTime()); section.addlocation(interpreter.getLocation()); section.addInstructor(interpreter.getInstructor()); } else { if (interpreter.hasSectionID()) { course.addSection(section); // new section section = new Section(); section.addSectionID(interpreter.getSectionID()); section.addTime(interpreter.getTime()); section.addlocation(interpreter.getLocation()); section.addInstructor(interpreter.getInstructor()); } else { // same section more info section.addTime(interpreter.getTime()); section.addlocation(interpreter.getLocation()); section.addInstructor(interpreter.getInstructor()); } } } else { /* // cancelled (Implies old course ended) if (course != null && section != null) { course.addSection(section); courseList.Add(course); } */ } }
public static List<Schedule> GenerateAllPossibleSchedule(Course course) { string courseID = course.courseID; string semester = course.semester; List<Section> lectureList = course.getSectionListByType(SectionType.Lecture); List<Section> tutorialList = course.getSectionListByType(SectionType.Tutorial); List<Section> practicalList = course.getSectionListByType(SectionType.Practical); List<Schedule> lectureListTemp = new List<Schedule>(); List<Schedule> tutorialListTemp = new List<Schedule>(); List<Schedule> practicalListTemp = new List<Schedule>(); List<Schedule> scheduleList = new List<Schedule>(); foreach (Section lectureSection in lectureList) { Schedule schedule = new Schedule(); Schedule mergedSchedule = schedule.AddScheduleSlot(new ScheduleSlot(courseID, semester, lectureSection)); lectureListTemp.Add(mergedSchedule); } if (lectureListTemp.Count != 0) { scheduleList = lectureListTemp; } else { if (tutorialListTemp.Count != 0) { foreach (Section tutorialSection in tutorialList) { Schedule schedule = new Schedule(); Schedule mergedSchedule = schedule.AddScheduleSlot(new ScheduleSlot(courseID, semester, tutorialSection)); tutorialListTemp.Add(mergedSchedule); } } } foreach (Section tutorialSection in tutorialList) { foreach (Schedule schedule in lectureListTemp) { ScheduleSlot tutorialScheduleSlot = new ScheduleSlot(courseID, semester, tutorialSection); if (!schedule.HasConfilct(tutorialScheduleSlot)) { Schedule mergedSchedule = schedule.AddScheduleSlot(tutorialScheduleSlot); tutorialListTemp.Add(mergedSchedule); } } } if (tutorialListTemp.Count != 0) { scheduleList = tutorialListTemp; } else { tutorialListTemp = scheduleList; } if (lectureListTemp.Count == 0 && tutorialListTemp.Count == 0 && practicalListTemp.Count != 0) { foreach (Section practicalSection in practicalList) { Schedule schedule = new Schedule(); Schedule mergedSchedule = schedule.AddScheduleSlot(new ScheduleSlot(courseID, semester, practicalSection)); practicalListTemp.Add(mergedSchedule); } } foreach (Section practicalSection in practicalList) { foreach (Schedule schedule in tutorialListTemp) { ScheduleSlot practicalScheduleSlot = new ScheduleSlot(courseID, semester, practicalSection); if (!schedule.HasConfilct(practicalScheduleSlot)) { Schedule mergedSchedule = schedule.AddScheduleSlot(practicalScheduleSlot); practicalListTemp.Add(mergedSchedule); } } } if (practicalListTemp.Count != 0) { scheduleList = practicalListTemp; } return scheduleList; }
public List<Course> getResult() { if (finalized == false) { if (section != null && course != null) { course.addSection(section); courseList.Add(course); } else { //meaning all departmental courses are cancelled //EX: www.artsandscience.utoronto.ca/ofr/timetable/winter/mst.html //Medieval Studies, Centre for [MST courses] } course = null; section = null; finalized = true; } return courseList; }