package com.tevinjeffrey.rutgersct.rutgersapi.utils; import com.tevinjeffrey.rutgersct.rutgersapi.model.Course; import com.tevinjeffrey.rutgersct.rutgersapi.model.Course.Section.MeetingTimes; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class SectionUtils { public SectionUtils() { } private static String formatMeetingHours(String time) { if (time.substring(0, 1).equals("0")) { return time.substring(1, 2) + ":" + time.substring(2); } return time.substring(0, 2) + ":" + time.substring(2); } private static String getMeetingHoursEnd(MeetingTimes time) { String meridian; String starttime = time.getStartTime(); String endtime = time.getEndTime(); String pmcode = time.getPmCode(); int e = Integer.valueOf(endtime.substring(0, 2)); int s = Integer.valueOf(starttime.substring(0, 2)); // check pm code if (!pmcode.equals("A")) { meridian = "PM"; } // check like 1pm after 11am else if (e < s) { meridian = "PM"; } // check 12pm else if (endtime.substring(0, 2).equals("12")) { meridian = "PM"; } // else am else meridian = "AM"; return formatMeetingHours(time.getEndTime()) + " " + meridian; } private static String getMeetingHoursBegin(MeetingTimes time) { String meridian; if (time.getPmCode() != null) { meridian = time.getPmCode().equals("A") ? "AM" : "PM"; return formatMeetingHours(time.getStartTime()) + " " + meridian; } return ""; } public static String getMeetingDayName(MeetingTimes time) { if (time.getMeetingDay() != null) { String formattedDay; switch (time.getMeetingDay()) { case "M": formattedDay = "Monday"; break; case "T": formattedDay = "Tuesday"; break; case "W": formattedDay = "Wednesday"; break; case "TH": formattedDay = "Thursday"; break; case "F": formattedDay = "Friday"; break; case "S": formattedDay = "Saturday"; break; case "U": formattedDay = "Sunday"; break; default: return ""; } return formattedDay; } return ""; } public static String getMeetingHours(MeetingTimes time) { if (time.getStartTime() != null || time.getEndTime() != null) { return SectionUtils.getMeetingHoursBegin(time) + " - " + SectionUtils.getMeetingHoursEnd(time); } else if (time.isByArrangement()) { return "Hours By Arrangement"; } return time.getMeetingModeDesc(); } public static String getClassLocation(MeetingTimes time) { StringBuilder meetingLocation = new StringBuilder(); if (time.getBuildingCode() != null) { meetingLocation.append(time.getBuildingCode()); } if (time.getRoomNumber() != null) { meetingLocation.append("-"); meetingLocation.append(time.getRoomNumber()); } if (time.getCampusAbbrev() != null) { meetingLocation.append(" "); meetingLocation.append(time.getCampusAbbrev()); } return meetingLocation.toString(); } public static int getTimeRank(MeetingTimes time) { if (time.getMeetingDay() != null) { switch (time.getMeetingDay()) { case "M": return 10; case "T": return 9; case "W": return 8; case "TH": return 7; case "F": return 6; case "S": return 5; case "U": return 4; } } return -1; } public static int getClassRank(MeetingTimes time) { if (time.isLecture()) { return 6; } else if (time.isRecitation()) { return 5; } else if (time.isByArrangement()) { return 4; } else if (time.isLab()) { return 3; } else if (time.isStudio()) { return 2; } return -1; } public static void scrubSectionList(List<Course.Section> sectionData) { Collection<Course.Section> toRemove = new ArrayList<>(); Course.Section temp; for (int i = 0, size = sectionData.size(); i < size; i++) { temp = sectionData.get(i); if (!temp.isPrinted()) { toRemove.add(temp); } } sectionData.removeAll(toRemove); } }