package edu.purdue.app.schedule; import java.util.*; import java.text.*; /** * *Represent a class a student is taking */ public class Class { private String subj; private String name; private String crn; private Calendar startTime; private Calendar endTime; private String location; private final static SimpleDateFormat timeFormat = new SimpleDateFormat("EEE hh:mm aa"); /** * Make a class from a week at a glance description * @param day Day class takes place * @param rawClass Raw class string from week at a glance */ public Class(int day, String rawClass) { String[] fields = rawClass.split(" "); subj = fields[0]; name = fields[1]; crn = fields[2]; location = fields[7] + " " + fields[8]; //Manually break up the fields with a scanner. No sscanf to help here Scanner readTime = new Scanner(fields[4]); readTime.useDelimiter(":"); int startHour = readTime.nextInt() % 12; int startMinute = readTime.nextInt(); readTime = new Scanner(fields[5]); readTime.useDelimiter("-"); String startTimeOfDay = readTime.next(); readTime.useDelimiter(":"); int endHour = -readTime.nextInt() % 12; int endMinute = readTime.nextInt(); String endTimeOfDay = fields[6]; startTime = setupTime(day, startHour, startMinute, startTimeOfDay); endTime = setupTime(day, endHour, endMinute, endTimeOfDay); } private Calendar setupTime(int day, int hour, int minute, String timeOfDay) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR, hour); cal.set(Calendar.MINUTE, minute); cal.set(Calendar.AM_PM, timeOfDay.equals("am") ? Calendar.AM : Calendar.PM); cal.set(Calendar.DAY_OF_WEEK, day); return cal; } public String getSubject() { return subj; } public String getName() { return name; } public String getCRN() { return crn; } public String getLocation() { return location; } public Calendar getStartTime() { return (Calendar) startTime.clone(); } public Calendar getEndTime() { return (Calendar) endTime.clone(); } @Override public String toString() { return "Subj: " + subj + "\nName: " + name + "\nCrn: " + crn + "\nLocation: " + location + "\nStart Time: " + timeFormat.format(startTime.getTime()) + "\nEnd Time: " + timeFormat.format(endTime.getTime()); } }