diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index 0b5fe87a15d7b50a9d4cb3fe66c17666670a83a2..a34d06e447d71083fb287496b351911805398dc7 100644 --- a/src/main/java/softeng/g4/Main.java +++ b/src/main/java/softeng/g4/Main.java @@ -1,7 +1,5 @@ package softeng.g4; -import jdk.swing.interop.SwingInterOpUtils; -import softeng.g4.appointment.Appointment; import softeng.g4.cli.AdminCLI; import softeng.g4.cli.ListIO; import softeng.g4.cli.StudentCLI; @@ -10,45 +8,10 @@ import softeng.g4.course.Course; import softeng.g4.course.CourseList; import softeng.g4.user.*; -import java.io.*; import java.util.*; public class Main { - /** - * TODOS for something general - * TODO: Needs refactoring and exception handling!!!! (especially the latter one) - * TODO: Create a class / method(s) for handling storage. Maybe something like ListIO? - * TODO: Create classes for different user types (TACLI, STUDENTCLI, ADMINCLI), and use them in the Main class - * It should be possible to make login of each user types to different classes, - * rather than using switch cases like a madman. - */ - - /** - * TODOs for "LOG IN" FEATURE - * IT's DONE. You can login by using their username. - * Ex: S akuStudent - * Ex: T akuTA - * Ex: A akuAdmin - * - * If you want to register a new user, - * you'll have to run a constructor of Student / TeachingAssistant / Admin - * Ex: New Student("exampleUsername", "Example Fullname", Long.valueOf("exampleNPM"), userList); - */ - - /** - * TODOs for "APPOINTMENT" FEATURE - * TODO: Implement the methods and attributes in the Appointment.java - * TODO: Implement the methods and attributes in the RequestAppointment.java - * TODO: Edit Main.java's intro methods, switch cases, Student.java, TeachingAssistant.java, Admin.java, - * Appointment.java, RequestAppointment.java, and maybe more, such that: - * - Student can add appointments - * - TeachingAssistant can accept / reject appointment by changing the appointment status - * - Both Student and TeachingAssistant can see the appointment details - * - Admin can ask permission to see the appointment details, which then they're able to see the appointment - * TODO: After all this TODOs are done, change Main.java such that it doesn't use the hardcoded version again - */ - public static void main(String[] args) { Scanner sc = new Scanner(System.in); String q = ""; @@ -56,44 +19,8 @@ public class Main { CourseList courseList; UserList userList; -// // --------Uncomment all of this for the "hardcoded" version. -// // Uncomment to add a new fresh userList and courseList -// courseList = new CourseList(); -// userList = new UserList(); -// -// // Uncomment here to add a new TA or Admin -// // This will add false users, for checking users in the arraylist. (NECESSARY) -// new Student("falseStudent", "False Student", Long.valueOf("123456789"), userList); -// new TeachingAssistant("falseTA", "False TA", Long.valueOf("123456789"), userList); -// new Admin("falseAdmin", "False Admin", userList); -// -// // Add testStudent -// new Student("akuStudent", "Aku Student", Long.valueOf("123456789"), userList); -// -// // Add testTa with a mock calendar and schedule -// TeachingAssistant testTa = new TeachingAssistant("akuTA", "Aku Asdos", Long.valueOf("123456789"), userList); -// testTa.setSchedule("monday", "Free", "12:00", "17:00"); -// testTa.setSchedule("tuesday", "Free", "08:00", "11:00"); -// testTa.setSchedule("tuesday", "Free", "12:00", "15:00"); -// testTa.setSchedule("saturday", "Busy", "07:00", "21:00"); -// testTa.setSchedule("sunday", "Free", "12:00", "17:00"); -// new TeachingAssistant("anotherTA", "Another TA", Long.valueOf("1"), userList); -// -// // Add testAdmin -// new Admin("akuAdmin", "Aku Admin", userList); -// -// // Add false course -// new Course("False Course", "FALSECOURSE", "False Professor", 0, courseList); -// -// // Add mock courses -// new Course("Mata Kuliah", "MATKUL420", "Aku Dosen", 4, courseList); -// new Course("Software Engineering", "SOFTENG2021", "Aku Professor", 3, courseList); -// new Course("Fisika", "PHYS101", "Aku Dosen Fisika", 4, courseList); -// -// // Save the course -// ListIO.saveList(courseList, userList); -// -// // ---------------- END OF "HARDCODED" VERSION + // --------Uncomment this for the "hardcoded" version. +// reset(); while (true) { @@ -111,7 +38,6 @@ public class Main { break; } - // TODO: Maybe it is better to move this whole if block into a different class String[] splited = {" ", " "}; splited = q.split("\\s+"); // Split by space String searchUsername; @@ -224,4 +150,42 @@ public class Main { System.out.println(); } + // Function to reset the list to its factory new state + public static void reset() { + CourseList courseList = new CourseList(); + UserList userList = new UserList(); + + // Uncomment here to add a new TA or Admin + // This will add false users, for checking users in the arraylist. (NECESSARY) + new Student("falseStudent", "False Student", Long.valueOf("123456789"), userList); + new TeachingAssistant("falseTA", "False TA", Long.valueOf("123456789"), userList); + new Admin("falseAdmin", "False Admin", userList); + + // Add testStudent + new Student("akuStudent", "Aku Student", Long.valueOf("123456789"), userList); + + // Add testTa with a mock calendar and schedule + TeachingAssistant testTa = new TeachingAssistant("akuTA", "Aku Asdos", Long.valueOf("123456789"), userList); + testTa.setSchedule("monday", "Free", "12:00", "17:00"); + testTa.setSchedule("tuesday", "Free", "08:00", "11:00"); + testTa.setSchedule("tuesday", "Free", "12:00", "15:00"); + testTa.setSchedule("saturday", "Busy", "07:00", "21:00"); + testTa.setSchedule("sunday", "Free", "12:00", "17:00"); + new TeachingAssistant("anotherTA", "Another TA", Long.valueOf("1"), userList); + + // Add testAdmin + new Admin("akuAdmin", "Aku Admin", userList); + + // Add false course + new Course("False Course", "FALSECOURSE", "False Professor", 0, courseList); + + // Add mock courses + new Course("Mata Kuliah", "MATKUL420", "Aku Dosen", 4, courseList); + new Course("Software Engineering", "SOFTENG2021", "Aku Professor", 3, courseList); + new Course("Fisika", "PHYS101", "Aku Dosen Fisika", 4, courseList); + + // Save the course + ListIO.saveList(courseList, userList); + } + } diff --git a/src/main/java/softeng/g4/appointment/Appointment.java b/src/main/java/softeng/g4/appointment/Appointment.java index 6e6f1f8a42eaa9bc99a3221f54edff3cf7e20990..de10b3eb30597b0a1e49ca9eab24b958b63d85c5 100644 --- a/src/main/java/softeng/g4/appointment/Appointment.java +++ b/src/main/java/softeng/g4/appointment/Appointment.java @@ -27,7 +27,7 @@ public class Appointment implements Serializable { this.status = "Pending"; } - public String generateId(){ + public String generateId() { int leftLimit = 65; // letter 'A' int rightLimit = 90; // letter 'Z' int targetStringLength = 5; @@ -43,11 +43,12 @@ public class Appointment implements Serializable { } public String toString() { - return "ID: " + id + "\nDate: " + date + "\nStudent: " + student.getUsername() + "\nTA: " + ta.getUsername() + "\nStart Time : " + startTime + "\nEnd Time: " + endTime + "\nDescription: " + description + "\nStatus: " + status; - //return date + student + " " + ta + " " + startTime + " - " + endTime + " " + description + status; + return "ID: " + id + "\nDate: " + date + "\nStudent: " + student.getUsername() + + "\nTA: " + ta.getUsername() + "\nStart Time : " + startTime + "\nEnd Time: " + endTime + + "\nDescription: " + description + "\nStatus: " + status; } - public String getId (){ + public String getId() { return id; } @@ -59,8 +60,8 @@ public class Appointment implements Serializable { return status; } - public void setStatus (String newstatus){ - this.status = newstatus; + public void setStatus(String newStatus) { + this.status = newStatus; } } diff --git a/src/main/java/softeng/g4/appointment/Reminder.java b/src/main/java/softeng/g4/appointment/Reminder.java deleted file mode 100644 index 7a8174ef82e3b1e247915aca04d8c3ecebe395b4..0000000000000000000000000000000000000000 --- a/src/main/java/softeng/g4/appointment/Reminder.java +++ /dev/null @@ -1,4 +0,0 @@ -package softeng.g4.appointment; - -public class Reminder { -} diff --git a/src/main/java/softeng/g4/appointment/RequestAppointment.java b/src/main/java/softeng/g4/appointment/RequestAppointment.java deleted file mode 100644 index 9a655b647c373001ea1ecb6c93bcedd38138e72b..0000000000000000000000000000000000000000 --- a/src/main/java/softeng/g4/appointment/RequestAppointment.java +++ /dev/null @@ -1,4 +0,0 @@ -package softeng.g4.appointment; - -public class RequestAppointment { -} diff --git a/src/main/java/softeng/g4/calendar/SeeCalendarCheckPermission.java b/src/main/java/softeng/g4/calendar/SeeCalendarCheckPermission.java new file mode 100644 index 0000000000000000000000000000000000000000..2deee4b42448ee00b79e6d5e9aa9a582875e27bc --- /dev/null +++ b/src/main/java/softeng/g4/calendar/SeeCalendarCheckPermission.java @@ -0,0 +1,18 @@ +package softeng.g4.calendar; + +import softeng.g4.user.TeachingAssistant; +import softeng.g4.user.UserList; + +import java.io.Serializable; + +public class SeeCalendarCheckPermission implements SeeCalendarStrategy, Serializable { + @Override + public void seeCalendar(String username, UserList userList) { + TeachingAssistant searchedTA = userList.searchTA(username); + if (searchedTA.getCalendar().isAdminPermission()) { + searchedTA.getCalendar().showCalendar(); + } else { + System.out.println("You don't have permission to see " + username + "'s calendar!"); + } + } +} diff --git a/src/main/java/softeng/g4/calendar/SeeCalendarStrategy.java b/src/main/java/softeng/g4/calendar/SeeCalendarStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..d5f47d6a956ff0c89b84b5d1a796347bf078f658 --- /dev/null +++ b/src/main/java/softeng/g4/calendar/SeeCalendarStrategy.java @@ -0,0 +1,7 @@ +package softeng.g4.calendar; + +import softeng.g4.user.UserList; + +public interface SeeCalendarStrategy { + void seeCalendar(String username, UserList userList); +} diff --git a/src/main/java/softeng/g4/calendar/SeeCalendarWithoutPermission.java b/src/main/java/softeng/g4/calendar/SeeCalendarWithoutPermission.java new file mode 100644 index 0000000000000000000000000000000000000000..5c6cdfe0a7944c98816ef378ae2bc29fab4587eb --- /dev/null +++ b/src/main/java/softeng/g4/calendar/SeeCalendarWithoutPermission.java @@ -0,0 +1,14 @@ +package softeng.g4.calendar; + +import softeng.g4.user.TeachingAssistant; +import softeng.g4.user.UserList; + +import java.io.Serializable; + +public class SeeCalendarWithoutPermission implements SeeCalendarStrategy, Serializable { + @Override + public void seeCalendar(String username, UserList userList) { + TeachingAssistant ta = userList.searchTA(username); + ta.getCalendar().showCalendar(); + } +} diff --git a/src/main/java/softeng/g4/cli/StudentCLI.java b/src/main/java/softeng/g4/cli/StudentCLI.java index 40a9b5eec74d9fe2689768292c6f9794b205dcb1..e9c604b8d12549c7622b3af8e5177fa29d8fa143 100644 --- a/src/main/java/softeng/g4/cli/StudentCLI.java +++ b/src/main/java/softeng/g4/cli/StudentCLI.java @@ -3,7 +3,6 @@ package softeng.g4.cli; import softeng.g4.appointment.Appointment; import softeng.g4.course.CourseList; import softeng.g4.user.Student; -import softeng.g4.user.TeachingAssistant; import softeng.g4.user.UserList; import java.util.Scanner; @@ -39,12 +38,12 @@ public class StudentCLI extends CLI { String endTime = sc.nextLine(); System.out.println("(Optional) Add description for your appointment: "); String description = sc.nextLine(); - currentStudent.setAppointment(day, ta, startTime, endTime, description, userList); + currentStudent.addAppointment(day, ta, startTime, endTime, description, userList); System.out.println("Successfully added a new appointment!"); break; case "APPOINTMENTS": - for (Appointment appointment : currentStudent.appointmentList) { + for (Appointment appointment : currentStudent.getAppointmentList()) { System.out.println(appointment); System.out.println(); } diff --git a/src/main/java/softeng/g4/cli/TACLI.java b/src/main/java/softeng/g4/cli/TACLI.java index 911ab583264d515889eea1b37c565b4f205595f4..5ff06136615dbf91f46ca4aa03d3bfbed881e75a 100644 --- a/src/main/java/softeng/g4/cli/TACLI.java +++ b/src/main/java/softeng/g4/cli/TACLI.java @@ -32,7 +32,7 @@ public class TACLI extends CLI { break; case "CALENDAR": - currentTA.seeCalendar(); + currentTA.seeCalendar(currentTA.getUsername(), userList); break; case "COURSELIST": @@ -40,7 +40,6 @@ public class TACLI extends CLI { break; case "ADD SCHEDULE": - //TODO: Move this to a different function System.out.println("Choose day (Monday, Tuesday, etc.): "); String day = sc.nextLine().toLowerCase(); System.out.println("Schedule name: "); @@ -53,7 +52,7 @@ public class TACLI extends CLI { System.out.println("Sucessfully added a new schedule!"); case "APPOINTMENTS": - for (Appointment appointment : currentTA.appointmentList) { + for (Appointment appointment : currentTA.getAppointmentList()) { System.out.println(appointment); System.out.println(); } diff --git a/src/main/java/softeng/g4/course/Course.java b/src/main/java/softeng/g4/course/Course.java index 0278661029f858b38db1bcc4e0406eb7e9ad1557..762e847039269ec870f9f2f5c5cadcfd5034836c 100644 --- a/src/main/java/softeng/g4/course/Course.java +++ b/src/main/java/softeng/g4/course/Course.java @@ -9,12 +9,10 @@ import java.util.ArrayList; public class Course implements Serializable { private String name; private String courseId; - private ArrayList students = new ArrayList(); private ArrayList teachingAssistants = new ArrayList(); private String professor; private int sks; private int coordinatorRoleIndex; - private boolean adminPermission; // Constructor public Course(String name, String courseId, String professor, int sks, CourseList courseList) { @@ -22,7 +20,6 @@ public class Course implements Serializable { this.courseId = courseId; this.professor = professor; this.sks = sks; - this.adminPermission = false; courseList.courseList.add(this); } diff --git a/src/main/java/softeng/g4/courselist.txt b/src/main/java/softeng/g4/courselist.txt index 78205cca124823c59a88f3c86c6743e200e92c72..bef2f6a5d97a5ebe510c2449b62d3528c2114d90 100644 Binary files a/src/main/java/softeng/g4/courselist.txt and b/src/main/java/softeng/g4/courselist.txt differ diff --git a/src/main/java/softeng/g4/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index efaebe70a29de706023e933a61da9fedaa97975d..b73da41f61053701d0917c83261945a9c1400641 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -1,18 +1,16 @@ package softeng.g4.user; -import softeng.g4.appointment.Appointment; +import softeng.g4.calendar.SeeCalendarCheckPermission; import softeng.g4.course.Course; import softeng.g4.course.CourseList; public class Admin extends User { - private String username; - private String fullname; - private String role; public Admin(String username, String fullname, UserList userList) { - this.username = username; - this.fullname = fullname; - this.role = "A"; + this.setUsername(username); + this.setFullname(fullname); + this.setRole("A"); + this.setSeeCalendarStrategy(new SeeCalendarCheckPermission()); // Register new Admin to the userList userList.userList.add(this); @@ -42,41 +40,16 @@ public class Admin extends User { System.out.println(); - // Uncomment to include the printing of the false users + // DEBUG: include the printing of the false users // for (User user: userList.userList) { // System.out.println(user); // } } - // TODO: Iteration 3 - Admin can see the appointment, if appointment has the permission true - public void seeAppointment(Appointment ap) { - } - + // Ask permission to the Teaching Assistant public void askPermission(String username, UserList userList) { TeachingAssistant searchedTA = userList.searchTA(username); searchedTA.setAskPermissionAdmin(this); System.out.println("You have successfully asked " + searchedTA.getUsername() + " to see their calendar!"); } - - // TODO: Iteration 3 - Admin can see the TA's calendar, if calendar has the permission true - public void seeCalendar(String username, UserList userList) { - TeachingAssistant searchedTA = userList.searchTA(username); - if (searchedTA.getCalendar().isAdminPermission()) { - searchedTA.getCalendar().showCalendar(); - } else { - System.out.println("You don't have permission to see " + username + "'s calendar!"); - } - } - - public String toString() { - return username + " - " + fullname; - } - - public String getRole() { - return role; - } - - public String getUsername() { - return username; - } } diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index 13bdf621fd7af0a11ac12121d7cd8fba056419cf..36c2c29b28fce0496417e12cd6c09110bbadaf37 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -1,62 +1,32 @@ package softeng.g4.user; -import softeng.g4.calendar.Calendar; -import softeng.g4.calendar.Schedule; import softeng.g4.appointment.Appointment; - -import java.util.ArrayList; +import softeng.g4.calendar.SeeCalendarWithoutPermission; public class Student extends UserStudent { - private String username; - private String fullname; - private String role; - private long npm; - public ArrayList appointmentList = new ArrayList(); - // Constructor public Student(String username, String fullname, long npm, UserList userList) { - this.username = username; - this.fullname = fullname; - this.role = "S"; - this.npm = npm; + this.setUsername(username); + this.setFullname(fullname); + this.setRole("S"); + this.setNPM(npm); + this.setSeeCalendarStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); } - // TODO: Adds appointment with the corresponding TeachingAssistant - public void setAppointment(String date, String TAusername, String startTime, String endTime, String description, UserList userList) { - TeachingAssistant ta = userList.searchTA(TAusername); - if(ta.getUsername().equals("falseTA")){ + // Adds appointment with the corresponding TeachingAssistant + public void addAppointment(String date, String TAUsername, + String startTime, String endTime, String description, UserList userList) { + TeachingAssistant ta = userList.searchTA(TAUsername); + if (ta.getUsername().equals("falseTA")) { System.out.println("TA not found"); } else { Appointment newAppointment = new Appointment(date, this, ta, startTime, endTime, description); - //this.calendar.addAppointment(day, newAppointment); - this.appointmentList.add(newAppointment); - ta.appointmentList.add(newAppointment); + this.getAppointmentList().add(newAppointment); + ta.getAppointmentList().add(newAppointment); } } - - // See this Student's calendar - // temporary calendar - // TODO: Change this method such that it returns the TA's calendar by searching for their username - public void seeCalendar(String TAusername, UserList userList) { - TeachingAssistant ta = userList.searchTA(TAusername); - ta.seeCalendar(); - } - - - public String getRole() { - return role; - } - - public String getUsername() { - return username; - } - - public String toString() { - return username + " - " + fullname; - } - } diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index f65a63c2f2b0220ccc9f48cb084fbbc8b90b0ecf..35196076b2f67a000e64cdc44308be6f25a3542e 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -1,27 +1,22 @@ package softeng.g4.user; import softeng.g4.appointment.Appointment; +import softeng.g4.calendar.SeeCalendarWithoutPermission; import softeng.g4.course.CourseList; import softeng.g4.calendar.Calendar; import softeng.g4.calendar.Schedule; -import java.util.ArrayList; - public class TeachingAssistant extends UserStudent { - private String username; - private String fullname; - private String role; - private long npm; private Admin askPermissionAdmin = null; private Calendar calendar = new Calendar(); - public ArrayList appointmentList = new ArrayList(); // Constructor public TeachingAssistant(String username, String fullname, long npm, UserList userList) { - this.username = username; - this.fullname = fullname; - this.role = "TA"; - this.npm = npm; + this.setUsername(username); + this.setFullname(fullname); + this.setRole("TA"); + this.setNPM(npm); + this.setSeeCalendarStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); @@ -38,22 +33,17 @@ public class TeachingAssistant extends UserStudent { this.calendar.addSchedule(day, newSchedule); } - // See this TA's calendar - public void seeCalendar() { - this.calendar.showCalendar(); - } - - // TODO: Implement these 2 methods such that they can change the status of the appointment to accepted or rejected + // Accept appointment public void acceptAppointment(String id, UserList userList) { boolean found = false; - for (Appointment appointment : appointmentList) { + for (Appointment appointment : this.getAppointmentList()) { if (appointment.getId().equals(id)) { found = true; appointment.setStatus("Accepted"); Student student = userList.searchStudent(appointment.getStudent().getUsername()); - for (Appointment studentappointment : student.appointmentList) { - if (studentappointment.getId().equals(id)) { - studentappointment.setStatus("Accepted"); + for (Appointment studentAppointment : student.getAppointmentList()) { + if (studentAppointment.getId().equals(id)) { + studentAppointment.setStatus("Accepted"); } } } @@ -65,16 +55,17 @@ public class TeachingAssistant extends UserStudent { } } + // Reject appointment public void rejectAppointment(String id, UserList userList) { boolean found = false; - for (Appointment appointment : appointmentList) { + for (Appointment appointment : this.getAppointmentList()) { if (appointment.getId().equals(id)) { found = true; appointment.setStatus("Rejected"); Student student = userList.searchStudent(appointment.getStudent().getUsername()); - for (Appointment studentappointment : student.appointmentList) { - if (studentappointment.getId().equals(id)) { - studentappointment.setStatus("Rejected"); + for (Appointment studentAppointment : student.getAppointmentList()) { + if (studentAppointment.getId().equals(id)) { + studentAppointment.setStatus("Rejected"); } } } @@ -87,6 +78,7 @@ public class TeachingAssistant extends UserStudent { } // Everytime this method is invoked, askPermissionAdmin will be updated to null + // Which means, TA will only be notified once after logging in. public void getAskPermissionAdmin() { if (this.askPermissionAdmin != null) { System.out.println(); @@ -106,18 +98,6 @@ public class TeachingAssistant extends UserStudent { this.calendar.switchPermission(); } - public String toString() { - return username + " - " + fullname; - } - - public String getRole() { - return role; - } - - public String getUsername() { - return username; - } - public Calendar getCalendar() { return calendar; } diff --git a/src/main/java/softeng/g4/user/User.java b/src/main/java/softeng/g4/user/User.java index 982ab9202ff9c7b7d96caf3bd575dcc14eae977c..098359b607dc9ef1f59b3189f3645c69b38a9c0b 100644 --- a/src/main/java/softeng/g4/user/User.java +++ b/src/main/java/softeng/g4/user/User.java @@ -1,10 +1,18 @@ package softeng.g4.user; +import softeng.g4.calendar.SeeCalendarStrategy; + import java.io.Serializable; public abstract class User implements Serializable { + private String fullname; private String username; private String role; + private SeeCalendarStrategy seeCalendarStrategy; + + public void seeCalendar(String username, UserList userList) { + seeCalendarStrategy.seeCalendar(username, userList); + } public String getRole() { return role; @@ -13,4 +21,28 @@ public abstract class User implements Serializable { public String getUsername() { return username; } + + public void setUsername(String username) { + this.username = username; + } + + public void setRole(String role) { + this.role = role; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String toString() { + return username + " - " + fullname; + } + + public void setSeeCalendarStrategy(SeeCalendarStrategy seeCalendarStrategy) { + this.seeCalendarStrategy = seeCalendarStrategy; + } } diff --git a/src/main/java/softeng/g4/user/UserStudent.java b/src/main/java/softeng/g4/user/UserStudent.java index 7a9c504d10c30686d90b9e5f399b25b21722094d..f9c3508fdc97005dc5454af5229ed35ee1948e0b 100644 --- a/src/main/java/softeng/g4/user/UserStudent.java +++ b/src/main/java/softeng/g4/user/UserStudent.java @@ -1,6 +1,22 @@ package softeng.g4.user; -public abstract class UserStudent extends User{ +import softeng.g4.appointment.Appointment; + +import java.util.ArrayList; + +public abstract class UserStudent extends User { private long npm; + private ArrayList appointmentList = new ArrayList(); + + public long getNPM() { + return npm; + } + + public void setNPM(long npm) { + this.npm = npm; + } + public ArrayList getAppointmentList() { + return this.appointmentList; + } } diff --git a/src/main/java/softeng/g4/userlist.txt b/src/main/java/softeng/g4/userlist.txt index 1ca37198c9f8b256499889ba3f24302a421291d9..1c662920da0e6f483c3ed33d82a6cf9da9d0f392 100644 Binary files a/src/main/java/softeng/g4/userlist.txt and b/src/main/java/softeng/g4/userlist.txt differ diff --git a/src/test/java/softeng/g4/user/StudentTest.java b/src/test/java/softeng/g4/user/StudentTest.java index c122963aa639b24bb83157df1a28b377c39d9c73..bee460ea857337a91e98aa0a2c2a3dd9c0f5e2e8 100644 --- a/src/test/java/softeng/g4/user/StudentTest.java +++ b/src/test/java/softeng/g4/user/StudentTest.java @@ -8,6 +8,9 @@ import softeng.g4.cli.ListIO; import softeng.g4.course.Course; import softeng.g4.course.CourseList; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + import static org.junit.jupiter.api.Assertions.*; class StudentTest { @@ -41,20 +44,60 @@ class StudentTest { @Test void seeCalendar() { + ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + System.setOut(new PrintStream(outContent)); + + testTa.setSchedule("monday", "Busy", "07:00", "21:00"); + testTa.setSchedule("tuesday", "Busy", "07:00", "21:00"); + testTa.setSchedule("wednesday", "Busy", "07:00", "21:00"); + testTa.setSchedule("thursday", "Busy", "07:00", "21:00"); + testTa.setSchedule("friday", "Busy", "07:00", "21:00"); + testTa.setSchedule("saturday", "Busy", "07:00", "21:00"); + testTa.setSchedule("sunday", "Busy", "07:00", "21:00"); + + new TeachingAssistant("testTA", "Test TA", Long.valueOf("1"), userList); + + testStudent.seeCalendar("testTa", userList); + + String outContentEdit = outContent.toString().replaceAll("\n", "").replaceAll("\r", ""); + + String expectedOutput = + "Monday:" + + "Busy 07:00 - 21:00" + + "Tuesday:" + + "Busy 07:00 - 21:00" + + "Wednesday:" + + "Busy 07:00 - 21:00" + + "Thursday:" + + "Busy 07:00 - 21:00" + + "Friday:" + + "Busy 07:00 - 21:00" + + "Saturday:" + + "Busy 07:00 - 21:00" + + "Sunday:" + + "Busy 07:00 - 21:00"; + + assertEquals(expectedOutput, outContentEdit); } + @Test void getRole() { } @Test void getUsername() { + testStudent = new Student("Kevin", "Kevin Kurn", Long.valueOf("987654321"), userList); + assertEquals(testStudent.getUsername(), "Kevin"); } @Test void testToString() { + testStudent = new Student("Jerome", "Jerome Emmanuel", Long.valueOf("123456789"), userList); + assertEquals(testStudent.toString(),"Jerome - Jerome Emmanuel"); } + @AfterEach void finalTearDown() { courseList = new CourseList(); diff --git a/src/test/java/softeng/g4/user/TeachingAssistantTest.java b/src/test/java/softeng/g4/user/TeachingAssistantTest.java index 9f6261b3df3ad73ef6d5159589c0934166d68408..5eb421d92f17750820ca108defca1fae7ccfb86a 100644 --- a/src/test/java/softeng/g4/user/TeachingAssistantTest.java +++ b/src/test/java/softeng/g4/user/TeachingAssistantTest.java @@ -1,6 +1,5 @@ package softeng.g4.user; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -70,7 +69,7 @@ class TeachingAssistantTest { testTa.setSchedule("saturday", "Busy", "07:00", "21:00"); testTa.setSchedule("sunday", "Busy", "07:00", "21:00"); - testTa.seeCalendar(); + testTa.seeCalendar(testTa.getUsername(), userList); // Remove all linebreaks from the print, since different environment uses different line separators String outContentEdit = outContent.toString().replaceAll("\n", "").replaceAll("\r", ""); @@ -96,20 +95,20 @@ class TeachingAssistantTest { @Test void acceptAppointment() { - testStudent.setAppointment( + testStudent.addAppointment( "31/12", "testTa", "08:00", "09:40", "testDesc", userList); - testTa.acceptAppointment(testTa.appointmentList.get(0).getId(), userList); - assertEquals(testTa.appointmentList.get(0).getStatus(), "Accepted"); - assertEquals(testStudent.appointmentList.get(0).getStatus(),"Accepted"); + testTa.acceptAppointment(testTa.getAppointmentList().get(0).getId(), userList); + assertEquals(testTa.getAppointmentList().get(0).getStatus(), "Accepted"); + assertEquals(testStudent.getAppointmentList().get(0).getStatus(),"Accepted"); } @Test void rejectAppointment() { - testStudent.setAppointment( + testStudent.addAppointment( "31/12", "testTa", "08:00", "09:40", "testDesc", userList); - testTa.rejectAppointment(testTa.appointmentList.get(0).getId(), userList); - assertEquals(testTa.appointmentList.get(0).getStatus(), "Rejected"); - assertEquals(testStudent.appointmentList.get(0).getStatus(),"Rejected"); + testTa.rejectAppointment(testTa.getAppointmentList().get(0).getId(), userList); + assertEquals(testTa.getAppointmentList().get(0).getStatus(), "Rejected"); + assertEquals(testStudent.getAppointmentList().get(0).getStatus(),"Rejected"); } @AfterEach