From dedb7e8f418d2653daedc43014ea15a9f3a80dc2 Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Sat, 19 Jun 2021 18:07:52 +0700 Subject: [PATCH 1/8] Remove unneeded classes and Add Jerome's tests --- .../java/softeng/g4/appointment/Reminder.java | 4 -- .../g4/appointment/RequestAppointment.java | 4 -- .../java/softeng/g4/user/StudentTest.java | 43 +++++++++++++++++++ 3 files changed, 43 insertions(+), 8 deletions(-) delete mode 100644 src/main/java/softeng/g4/appointment/Reminder.java delete mode 100644 src/main/java/softeng/g4/appointment/RequestAppointment.java 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 7a8174e..0000000 --- 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 9a655b6..0000000 --- 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/test/java/softeng/g4/user/StudentTest.java b/src/test/java/softeng/g4/user/StudentTest.java index c122963..bee460e 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(); -- GitLab From 71d9c904df0286539f1e04842fdfe6913687fcb4 Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Sat, 19 Jun 2021 18:35:45 +0700 Subject: [PATCH 2/8] Change public modifiers to private and add reset() function in Main.java --- src/main/java/softeng/g4/Main.java | 116 ++++++------------ src/main/java/softeng/g4/cli/StudentCLI.java | 2 +- src/main/java/softeng/g4/cli/TACLI.java | 3 +- src/main/java/softeng/g4/user/Student.java | 14 ++- .../softeng/g4/user/TeachingAssistant.java | 13 +- src/main/java/softeng/g4/userlist.txt | Bin 1845 -> 1845 bytes .../g4/user/TeachingAssistantTest.java | 12 +- 7 files changed, 65 insertions(+), 95 deletions(-) diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index 0b5fe87..a34d06e 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/cli/StudentCLI.java b/src/main/java/softeng/g4/cli/StudentCLI.java index 40a9b5e..ddaf23b 100644 --- a/src/main/java/softeng/g4/cli/StudentCLI.java +++ b/src/main/java/softeng/g4/cli/StudentCLI.java @@ -44,7 +44,7 @@ public class StudentCLI extends CLI { 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 911ab58..47c92e8 100644 --- a/src/main/java/softeng/g4/cli/TACLI.java +++ b/src/main/java/softeng/g4/cli/TACLI.java @@ -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/user/Student.java b/src/main/java/softeng/g4/user/Student.java index 13bdf62..667d34e 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -11,7 +11,7 @@ public class Student extends UserStudent { private String fullname; private String role; private long npm; - public ArrayList appointmentList = new ArrayList(); + private ArrayList appointmentList = new ArrayList(); // Constructor @@ -25,7 +25,7 @@ public class Student extends UserStudent { userList.userList.add(this); } - // TODO: Adds appointment with the corresponding TeachingAssistant + // 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")){ @@ -34,13 +34,11 @@ public class Student extends UserStudent { Appointment newAppointment = new Appointment(date, this, ta, startTime, endTime, description); //this.calendar.addAppointment(day, newAppointment); this.appointmentList.add(newAppointment); - ta.appointmentList.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 + // See Teaching Assistant's calendar public void seeCalendar(String TAusername, UserList userList) { TeachingAssistant ta = userList.searchTA(TAusername); ta.seeCalendar(); @@ -59,4 +57,8 @@ public class Student extends UserStudent { return username + " - " + fullname; } + public ArrayList getAppointmentList() { + return this.appointmentList; + } + } diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index f65a63c..4a2cdbb 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -14,7 +14,7 @@ public class TeachingAssistant extends UserStudent { private long npm; private Admin askPermissionAdmin = null; private Calendar calendar = new Calendar(); - public ArrayList appointmentList = new ArrayList(); + private ArrayList appointmentList = new ArrayList(); // Constructor public TeachingAssistant(String username, String fullname, long npm, UserList userList) { @@ -43,7 +43,7 @@ public class TeachingAssistant extends UserStudent { 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) { @@ -51,7 +51,7 @@ public class TeachingAssistant extends UserStudent { found = true; appointment.setStatus("Accepted"); Student student = userList.searchStudent(appointment.getStudent().getUsername()); - for (Appointment studentappointment : student.appointmentList) { + for (Appointment studentappointment : student.getAppointmentList()) { if (studentappointment.getId().equals(id)) { studentappointment.setStatus("Accepted"); } @@ -65,6 +65,7 @@ public class TeachingAssistant extends UserStudent { } } + // Reject appointment public void rejectAppointment(String id, UserList userList) { boolean found = false; for (Appointment appointment : appointmentList) { @@ -72,7 +73,7 @@ public class TeachingAssistant extends UserStudent { found = true; appointment.setStatus("Rejected"); Student student = userList.searchStudent(appointment.getStudent().getUsername()); - for (Appointment studentappointment : student.appointmentList) { + for (Appointment studentappointment : student.getAppointmentList()) { if (studentappointment.getId().equals(id)) { studentappointment.setStatus("Rejected"); } @@ -121,4 +122,8 @@ public class TeachingAssistant extends UserStudent { public Calendar getCalendar() { return calendar; } + + 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..ac8db77d5b22126a56fdd33f12a0dbd0bcc3ea62 100644 GIT binary patch delta 32 ocmdnWx0P?g0(Ql(9s)a$8Esr{$;h!OY>{sL8g{?UFBpAU0onHqyZ`_I delta 32 ocmdnWx0P?g0(MS?qpIuu#5OLsWaL=9u3{&fxz+j2FBpAU0mt(UGynhq diff --git a/src/test/java/softeng/g4/user/TeachingAssistantTest.java b/src/test/java/softeng/g4/user/TeachingAssistantTest.java index 9f6261b..9e96f52 100644 --- a/src/test/java/softeng/g4/user/TeachingAssistantTest.java +++ b/src/test/java/softeng/g4/user/TeachingAssistantTest.java @@ -98,18 +98,18 @@ class TeachingAssistantTest { void acceptAppointment() { testStudent.setAppointment( "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( "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 -- GitLab From e123c6eb1f369aa29589ecc70603d3d107face04 Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Sat, 19 Jun 2021 18:48:53 +0700 Subject: [PATCH 3/8] User subclasses uses functions and variables from its superclass --- src/main/java/softeng/g4/user/Admin.java | 7 ++--- src/main/java/softeng/g4/user/Student.java | 27 +++--------------- .../softeng/g4/user/TeachingAssistant.java | 24 +++------------- src/main/java/softeng/g4/user/User.java | 21 ++++++++++++++ .../java/softeng/g4/user/UserStudent.java | 9 +++++- src/main/java/softeng/g4/userlist.txt | Bin 1845 -> 1713 bytes 6 files changed, 39 insertions(+), 49 deletions(-) diff --git a/src/main/java/softeng/g4/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index efaebe7..048db46 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -48,17 +48,14 @@ public class Admin extends 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 + // 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()) { diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index 667d34e..badb295 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -7,19 +7,14 @@ import softeng.g4.appointment.Appointment; import java.util.ArrayList; public class Student extends UserStudent { - private String username; - private String fullname; - private String role; - private long npm; private 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); // Register new TA to the userList userList.userList.add(this); @@ -32,7 +27,6 @@ public class Student extends UserStudent { 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.getAppointmentList().add(newAppointment); } @@ -44,19 +38,6 @@ public class Student extends UserStudent { ta.seeCalendar(); } - - public String getRole() { - return role; - } - - public String getUsername() { - return username; - } - - public String toString() { - return username + " - " + fullname; - } - public ArrayList getAppointmentList() { return this.appointmentList; } diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index 4a2cdbb..0b5f602 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -8,20 +8,16 @@ 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(); private 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); // Register new TA to the userList userList.userList.add(this); @@ -107,18 +103,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 982ab92..8ec123b 100644 --- a/src/main/java/softeng/g4/user/User.java +++ b/src/main/java/softeng/g4/user/User.java @@ -3,6 +3,7 @@ package softeng.g4.user; import java.io.Serializable; public abstract class User implements Serializable { + private String fullname; private String username; private String role; @@ -13,4 +14,24 @@ 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; + } } diff --git a/src/main/java/softeng/g4/user/UserStudent.java b/src/main/java/softeng/g4/user/UserStudent.java index 7a9c504..0a7f94b 100644 --- a/src/main/java/softeng/g4/user/UserStudent.java +++ b/src/main/java/softeng/g4/user/UserStudent.java @@ -1,6 +1,13 @@ package softeng.g4.user; -public abstract class UserStudent extends User{ +public abstract class UserStudent extends User { private long npm; + public long getNPM() { + return npm; + } + + public void setNPM(long npm) { + this.npm = npm; + } } diff --git a/src/main/java/softeng/g4/userlist.txt b/src/main/java/softeng/g4/userlist.txt index ac8db77d5b22126a56fdd33f12a0dbd0bcc3ea62..5aa055de5c334c97c427ee57616ff7ce2b991731 100644 GIT binary patch delta 510 zcmdnWw~=?k0`9)~_tL75uT5fNV4S#7T)m=*LAp3Utt2%sT`%24ue3O|NG}vf1ecVi zq~?`;3tMqKd-mm9leHNYx#!NeYImERAn>7w$^r@ZmKaGsC@EA#v--~kRrCpx0t0i&u6k`3@*|y~@bwG_kE7D4Ha^P0@Ft8Nm=RmB(upVSSd%N5y)Z1sBwsLDj9nf8{Bf48 delta 762 zcmdnUyOnRk0zt*E9s)a$8U1HsVD(~P&MU~Byq{5WvN)rr1)C28M`>|tQC?zhY9T`% z16xHAgLH9zT1jeNx?Z}89!O3v6i5V@l%}NSm84c)Kk!oNi~YoxipFIoN2(uoD=%hZ zVDe#LDay}*n1EqoK|uin6ig0elAIjOs64r!QB`nL*dpEfHSB&&4D4`M71;o_r}eo=h~wlQW=UIS{noYL<9TK? zF))*C7suqs%<5bS3qk%dC}H4s%q~@ch7ia}JS7ZViP@!4kz$Y#ABrYvHjtPw!{mLe zVv`$~StieAagYPX1q+h5Ig3jYi%LQ=p%F9rH;X=_?qqFNT>)K?W_=K003r-0?`0JS znNrVG&H@Z*Ca{INB@C>FhE@h(B|tZ_8dv~12q{yT6xfIgumm$Gn!si-RFp7qf_&vz zoRSZglLZ<9^izlypu1mvH;ylh~{wy2A^YIeo01Z n5ikxx?gLuRnFtYqIzYal0OrD!+{`?XA|+tN16}9{;#U9whYZTs -- GitLab From d1ad93daa3f02f40dc16582179b975e68ca2fb84 Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Tue, 22 Jun 2021 11:39:28 +0700 Subject: [PATCH 4/8] Add Strategy pattern for seeing calendar --- src/main/java/softeng/g4/Main.java | 2 +- .../calendar/SeeCalendarCheckPermission.java | 18 ++++++++++++++++++ .../g4/calendar/SeeCalendarStrategy.java | 7 +++++++ .../SeeCalendarWithoutPermission.java | 14 ++++++++++++++ src/main/java/softeng/g4/cli/TACLI.java | 2 +- src/main/java/softeng/g4/user/Admin.java | 13 ++----------- src/main/java/softeng/g4/user/Student.java | 8 ++------ .../softeng/g4/user/TeachingAssistant.java | 7 ++----- src/main/java/softeng/g4/user/User.java | 11 +++++++++++ src/main/java/softeng/g4/userlist.txt | Bin 1713 -> 2011 bytes .../g4/user/TeachingAssistantTest.java | 2 +- 11 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 src/main/java/softeng/g4/calendar/SeeCalendarCheckPermission.java create mode 100644 src/main/java/softeng/g4/calendar/SeeCalendarStrategy.java create mode 100644 src/main/java/softeng/g4/calendar/SeeCalendarWithoutPermission.java diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index a34d06e..3f0d406 100644 --- a/src/main/java/softeng/g4/Main.java +++ b/src/main/java/softeng/g4/Main.java @@ -20,7 +20,7 @@ public class Main { UserList userList; // --------Uncomment this for the "hardcoded" version. -// reset(); + reset(); while (true) { 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 0000000..2deee4b --- /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 0000000..d5f47d6 --- /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 0000000..5c6cdfe --- /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/TACLI.java b/src/main/java/softeng/g4/cli/TACLI.java index 47c92e8..5ff0613 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": diff --git a/src/main/java/softeng/g4/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index 048db46..329625d 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -1,6 +1,6 @@ package softeng.g4.user; -import softeng.g4.appointment.Appointment; +import softeng.g4.calendar.SeeCalendarCheckPermission; import softeng.g4.course.Course; import softeng.g4.course.CourseList; @@ -13,6 +13,7 @@ public class Admin extends User { this.username = username; this.fullname = fullname; this.role = "A"; + this.setStrategy(new SeeCalendarCheckPermission()); // Register new Admin to the userList userList.userList.add(this); @@ -55,16 +56,6 @@ public class Admin extends User { System.out.println("You have successfully asked " + searchedTA.getUsername() + " to see their calendar!"); } - // 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; } diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index badb295..2d4a6f2 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -3,6 +3,7 @@ package softeng.g4.user; import softeng.g4.calendar.Calendar; import softeng.g4.calendar.Schedule; import softeng.g4.appointment.Appointment; +import softeng.g4.calendar.SeeCalendarWithoutPermission; import java.util.ArrayList; @@ -15,6 +16,7 @@ public class Student extends UserStudent { this.setFullname(fullname); this.setRole("S"); this.setNPM(npm); + this.setStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); @@ -32,12 +34,6 @@ public class Student extends UserStudent { } } - // See Teaching Assistant's calendar - public void seeCalendar(String TAusername, UserList userList) { - TeachingAssistant ta = userList.searchTA(TAusername); - ta.seeCalendar(); - } - public ArrayList getAppointmentList() { return this.appointmentList; } diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index 0b5f602..855d69f 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -1,6 +1,7 @@ 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; @@ -18,6 +19,7 @@ public class TeachingAssistant extends UserStudent { this.setFullname(fullname); this.setRole("TA"); this.setNPM(npm); + this.setStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); @@ -34,11 +36,6 @@ public class TeachingAssistant extends UserStudent { this.calendar.addSchedule(day, newSchedule); } - // See this TA's calendar - public void seeCalendar() { - this.calendar.showCalendar(); - } - // Accept appointment public void acceptAppointment(String id, UserList userList) { boolean found = false; diff --git a/src/main/java/softeng/g4/user/User.java b/src/main/java/softeng/g4/user/User.java index 8ec123b..e039956 100644 --- a/src/main/java/softeng/g4/user/User.java +++ b/src/main/java/softeng/g4/user/User.java @@ -1,11 +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 strategy; + + public void seeCalendar(String username, UserList userList) { + strategy.seeCalendar(username, userList); + } public String getRole() { return role; @@ -34,4 +41,8 @@ public abstract class User implements Serializable { public String toString() { return username + " - " + fullname; } + + public void setStrategy(SeeCalendarStrategy strategy) { + this.strategy = strategy; + } } diff --git a/src/main/java/softeng/g4/userlist.txt b/src/main/java/softeng/g4/userlist.txt index 5aa055de5c334c97c427ee57616ff7ce2b991731..40ea3dc580137bf24eab918e7ce1c5ce465a901d 100644 GIT binary patch delta 835 zcma)2L2DC16rS1aSgl!WiEWHnOslb$&}360(e&aNsFxx_suo3MZKj(w$!^@4#V8`) zy%^^#-n@AbuhxPmkKX+O(vx>jzS&9A2tr-vy*KZh_r3kz`)K``vVZOFz(ItE=p+xe z1@qm4TP{SLg@v2o);%tC&EC8BaOp47X`RpM;3zOCr7{q&gHa7XG7y%#INkqx<^&+O zG}_Vue1C5~b!C*frxDx@WXc&_EOQY$g1JuxT3R1yD!S$3meXc_!wHLZ#%hCmeNeh8 zDL(%IhOozm7!nF&gxj8I29dbI!j8we7x?hs=StxUSSDv6)aweA+;-ZW)kV}`zCiFz z+=XXZGE?$3K6mUHBzZ76wL1&)Gk%rfkI@Tc2{aKiH|RcT(2^S;`whTs%9Z5TJ|=G!x?qHQ*Cd`Cd0hP9gb)%*vMuQ@%Bq z4ryufoB0q|WS%S^uc!@OR<5ets@x%IRb4gWHb&f}A`mH+s;_f%K)L)$^2SJ&CBG9B{`X&T@oZNQm4lt?wWy7%<`)Dy3=4@j-1`G5 CQ#3^Y delta 455 zcmcc3zmbe$xMP{<23C4IJ4UFUih4o;Y`6lOadn{CjED z$JZuJJZ#DFEo{Z{?Ae!ZO%`BOftvN*I8EJ^Jiq9VT-QW@~Nd>82X9Cl@kx3zjgjgVlvN!jyLf#xzgmN0NlW?@wl;|4MkvrADe6rDVe zT}+9ugn`pByHvrkI3>ThkfDx2xP*Zfs1|Oi=wx|zaV9Yakm|_>EG(0^vuZN^n?Ly( zYZA~uo@}}T`XFtFAi@Yl7*C$dE)G&@#Z=A$bU72)Sbd`IFA1qDE_Lp%ZUI7p#V2?Gbv J6X1ZT006k2glqr+ diff --git a/src/test/java/softeng/g4/user/TeachingAssistantTest.java b/src/test/java/softeng/g4/user/TeachingAssistantTest.java index 9e96f52..d94f088 100644 --- a/src/test/java/softeng/g4/user/TeachingAssistantTest.java +++ b/src/test/java/softeng/g4/user/TeachingAssistantTest.java @@ -70,7 +70,7 @@ class TeachingAssistantTest { testTa.setSchedule("saturday", "Busy", "07:00", "21:00"); testTa.setSchedule("sunday", "Busy", "07:00", "21:00"); - testTa.seeCalendar(); +// testTa.seeCalendar(); // Remove all linebreaks from the print, since different environment uses different line separators String outContentEdit = outContent.toString().replaceAll("\n", "").replaceAll("\r", ""); -- GitLab From de3723311a3a2ada65bcb6d8885473633dca558f Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Tue, 22 Jun 2021 11:48:13 +0700 Subject: [PATCH 5/8] Move appointmentList in Student and TeachingAssistant to its superclass UserStudent --- src/main/java/softeng/g4/Main.java | 2 +- src/main/java/softeng/g4/user/Student.java | 10 ++------- .../softeng/g4/user/TeachingAssistant.java | 21 +++++++----------- .../java/softeng/g4/user/UserStudent.java | 9 ++++++++ src/main/java/softeng/g4/userlist.txt | Bin 2011 -> 1903 bytes 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index 3f0d406..a34d06e 100644 --- a/src/main/java/softeng/g4/Main.java +++ b/src/main/java/softeng/g4/Main.java @@ -20,7 +20,7 @@ public class Main { UserList userList; // --------Uncomment this for the "hardcoded" version. - reset(); +// reset(); while (true) { diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index 2d4a6f2..7085350 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -8,7 +8,6 @@ import softeng.g4.calendar.SeeCalendarWithoutPermission; import java.util.ArrayList; public class Student extends UserStudent { - private ArrayList appointmentList = new ArrayList(); // Constructor public Student(String username, String fullname, long npm, UserList userList) { @@ -25,17 +24,12 @@ public class Student extends UserStudent { // 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")){ + if (ta.getUsername().equals("falseTA")) { System.out.println("TA not found"); } else { Appointment newAppointment = new Appointment(date, this, ta, startTime, endTime, description); - this.appointmentList.add(newAppointment); + this.getAppointmentList().add(newAppointment); ta.getAppointmentList().add(newAppointment); } } - - public ArrayList getAppointmentList() { - return this.appointmentList; - } - } diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index 855d69f..57a9f33 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -11,7 +11,6 @@ import java.util.ArrayList; public class TeachingAssistant extends UserStudent { private Admin askPermissionAdmin = null; private Calendar calendar = new Calendar(); - private ArrayList appointmentList = new ArrayList(); // Constructor public TeachingAssistant(String username, String fullname, long npm, UserList userList) { @@ -39,14 +38,14 @@ public class TeachingAssistant extends UserStudent { // 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.getAppointmentList()) { - if (studentappointment.getId().equals(id)) { - studentappointment.setStatus("Accepted"); + for (Appointment studentAppointment : student.getAppointmentList()) { + if (studentAppointment.getId().equals(id)) { + studentAppointment.setStatus("Accepted"); } } } @@ -61,14 +60,14 @@ 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.getAppointmentList()) { - if (studentappointment.getId().equals(id)) { - studentappointment.setStatus("Rejected"); + for (Appointment studentAppointment : student.getAppointmentList()) { + if (studentAppointment.getId().equals(id)) { + studentAppointment.setStatus("Rejected"); } } } @@ -103,8 +102,4 @@ public class TeachingAssistant extends UserStudent { public Calendar getCalendar() { return calendar; } - - public ArrayList getAppointmentList() { - return this.appointmentList; - } } diff --git a/src/main/java/softeng/g4/user/UserStudent.java b/src/main/java/softeng/g4/user/UserStudent.java index 0a7f94b..f9c3508 100644 --- a/src/main/java/softeng/g4/user/UserStudent.java +++ b/src/main/java/softeng/g4/user/UserStudent.java @@ -1,7 +1,12 @@ package softeng.g4.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; @@ -10,4 +15,8 @@ public abstract class UserStudent extends User { 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 40ea3dc580137bf24eab918e7ce1c5ce465a901d..5b23c8c8b10a7f1390ef31a6d0cb6bfb381144d6 100644 GIT binary patch delta 277 zcmcc3|DKOy&07Z6;vxo#i4R34DzLD>e$xMP{<23C4IJ4UFUih4o;Y`6lOgvn(=KGU+ ziWo$I=5jdvo4zAmhGEiVN5%teb81BTjJ{0fWs+e$J6VUxoLlRo*B#!Ar`G~ao7~OR z4ipt-HetJv>*mDMwmFztf)OZ^$6~{%H~Au?{Nz(C{K^-3@_WR%&&>onr=p;sgn`>F zF{e0H!7(Kl=mG{t#}Wpv$tKGX0ys`57xeBO}-3Z){HiJE363 delta 389 zcmaFQcbnhf{r~(-EO_yN+vL_2M9^e7eH6lR52qbWWQHB{re`Pe+r~)#yff$IKqm-B!n0*-d6AKFR zGxJJvQ}aqdo+xCfV_=+Y&eRUpw4cd@3#d5P%?V`a=ATRwj9_sg78^$0$^I;QP}3qH zhPo>P{lidEP*B3a?UtBRoT}iMk_$APfzh#qfp_u(7Hv`9#O%`GlF}5Qbqqkj9u3qf hI{6~A*yJxPYGAXaS!3BC#%-=* Date: Tue, 22 Jun 2021 11:54:31 +0700 Subject: [PATCH 6/8] Remove un-needed comments and Fix camel casing --- .../java/softeng/g4/appointment/Appointment.java | 13 +++++++------ src/main/java/softeng/g4/user/Admin.java | 2 +- src/main/java/softeng/g4/user/Student.java | 5 +++-- .../java/softeng/g4/user/TeachingAssistant.java | 1 + .../java/softeng/g4/user/TeachingAssistantTest.java | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/softeng/g4/appointment/Appointment.java b/src/main/java/softeng/g4/appointment/Appointment.java index 6e6f1f8..de10b3e 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/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index 329625d..c6d8389 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -43,7 +43,7 @@ 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); // } diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index 7085350..d179546 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -22,8 +22,9 @@ public class Student extends UserStudent { } // 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); + 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")) { System.out.println("TA not found"); } else { diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index 57a9f33..680d371 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -80,6 +80,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(); diff --git a/src/test/java/softeng/g4/user/TeachingAssistantTest.java b/src/test/java/softeng/g4/user/TeachingAssistantTest.java index d94f088..c41299a 100644 --- a/src/test/java/softeng/g4/user/TeachingAssistantTest.java +++ b/src/test/java/softeng/g4/user/TeachingAssistantTest.java @@ -70,7 +70,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", ""); -- GitLab From ad07f9e752d0c399bb8bdd5a14cda6852ddc51d6 Mon Sep 17 00:00:00 2001 From: saddamonpc Date: Tue, 22 Jun 2021 14:17:16 +0700 Subject: [PATCH 7/8] Change strategy variable --- src/main/java/softeng/g4/Main.java | 2 +- src/main/java/softeng/g4/user/Admin.java | 2 +- src/main/java/softeng/g4/user/Student.java | 6 +----- .../softeng/g4/user/TeachingAssistant.java | 4 +--- src/main/java/softeng/g4/user/User.java | 8 ++++---- src/main/java/softeng/g4/userlist.txt | Bin 1903 -> 1914 bytes 6 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index a34d06e..3f0d406 100644 --- a/src/main/java/softeng/g4/Main.java +++ b/src/main/java/softeng/g4/Main.java @@ -20,7 +20,7 @@ public class Main { UserList userList; // --------Uncomment this for the "hardcoded" version. -// reset(); + reset(); while (true) { diff --git a/src/main/java/softeng/g4/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index c6d8389..d9d9dcd 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -13,7 +13,7 @@ public class Admin extends User { this.username = username; this.fullname = fullname; this.role = "A"; - this.setStrategy(new SeeCalendarCheckPermission()); + this.setSeeCalendarStrategy(new SeeCalendarCheckPermission()); // Register new Admin to the userList userList.userList.add(this); diff --git a/src/main/java/softeng/g4/user/Student.java b/src/main/java/softeng/g4/user/Student.java index d179546..8b47e4b 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -1,12 +1,8 @@ package softeng.g4.user; -import softeng.g4.calendar.Calendar; -import softeng.g4.calendar.Schedule; import softeng.g4.appointment.Appointment; import softeng.g4.calendar.SeeCalendarWithoutPermission; -import java.util.ArrayList; - public class Student extends UserStudent { // Constructor @@ -15,7 +11,7 @@ public class Student extends UserStudent { this.setFullname(fullname); this.setRole("S"); this.setNPM(npm); - this.setStrategy(new SeeCalendarWithoutPermission()); + this.setSeeCalendarStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); diff --git a/src/main/java/softeng/g4/user/TeachingAssistant.java b/src/main/java/softeng/g4/user/TeachingAssistant.java index 680d371..3519607 100644 --- a/src/main/java/softeng/g4/user/TeachingAssistant.java +++ b/src/main/java/softeng/g4/user/TeachingAssistant.java @@ -6,8 +6,6 @@ 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 Admin askPermissionAdmin = null; private Calendar calendar = new Calendar(); @@ -18,7 +16,7 @@ public class TeachingAssistant extends UserStudent { this.setFullname(fullname); this.setRole("TA"); this.setNPM(npm); - this.setStrategy(new SeeCalendarWithoutPermission()); + this.setSeeCalendarStrategy(new SeeCalendarWithoutPermission()); // Register new TA to the userList userList.userList.add(this); diff --git a/src/main/java/softeng/g4/user/User.java b/src/main/java/softeng/g4/user/User.java index e039956..098359b 100644 --- a/src/main/java/softeng/g4/user/User.java +++ b/src/main/java/softeng/g4/user/User.java @@ -8,10 +8,10 @@ public abstract class User implements Serializable { private String fullname; private String username; private String role; - private SeeCalendarStrategy strategy; + private SeeCalendarStrategy seeCalendarStrategy; public void seeCalendar(String username, UserList userList) { - strategy.seeCalendar(username, userList); + seeCalendarStrategy.seeCalendar(username, userList); } public String getRole() { @@ -42,7 +42,7 @@ public abstract class User implements Serializable { return username + " - " + fullname; } - public void setStrategy(SeeCalendarStrategy strategy) { - this.strategy = strategy; + public void setSeeCalendarStrategy(SeeCalendarStrategy seeCalendarStrategy) { + this.seeCalendarStrategy = seeCalendarStrategy; } } diff --git a/src/main/java/softeng/g4/userlist.txt b/src/main/java/softeng/g4/userlist.txt index 5b23c8c8b10a7f1390ef31a6d0cb6bfb381144d6..201e402f45bbcc945d1b96c0f16a45d99010798d 100644 GIT binary patch delta 39 vcmaFQ_ls`>7bC}Hhck0uUOKX4vJj&ouW)f{s&isaYF Date: Tue, 22 Jun 2021 15:34:06 +0700 Subject: [PATCH 8/8] Update Admin constructor and Student add appointment method name --- src/main/java/softeng/g4/Main.java | 2 +- src/main/java/softeng/g4/cli/StudentCLI.java | 3 +-- src/main/java/softeng/g4/course/Course.java | 3 --- src/main/java/softeng/g4/courselist.txt | Bin 697 -> 591 bytes src/main/java/softeng/g4/user/Admin.java | 21 +++--------------- src/main/java/softeng/g4/user/Student.java | 2 +- src/main/java/softeng/g4/userlist.txt | Bin 1914 -> 1864 bytes .../g4/user/TeachingAssistantTest.java | 5 ++--- 8 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/main/java/softeng/g4/Main.java b/src/main/java/softeng/g4/Main.java index 3f0d406..a34d06e 100644 --- a/src/main/java/softeng/g4/Main.java +++ b/src/main/java/softeng/g4/Main.java @@ -20,7 +20,7 @@ public class Main { UserList userList; // --------Uncomment this for the "hardcoded" version. - reset(); +// reset(); while (true) { diff --git a/src/main/java/softeng/g4/cli/StudentCLI.java b/src/main/java/softeng/g4/cli/StudentCLI.java index ddaf23b..e9c604b 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,7 +38,7 @@ 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; diff --git a/src/main/java/softeng/g4/course/Course.java b/src/main/java/softeng/g4/course/Course.java index 0278661..762e847 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 GIT binary patch delta 52 zcmdnVdY)y%a_;I~Nq5xq>o+kmuuVJ?GuePqX>u^5>m(+Q$(tB$K@=yG4~WWVvS6$L E0QsX3&j0`b delta 104 zcmX@lvXgbfa@o1p8#KG+6Amyja6~ciC#K|P<^`k{V diff --git a/src/main/java/softeng/g4/user/Admin.java b/src/main/java/softeng/g4/user/Admin.java index d9d9dcd..b73da41 100644 --- a/src/main/java/softeng/g4/user/Admin.java +++ b/src/main/java/softeng/g4/user/Admin.java @@ -5,14 +5,11 @@ 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 @@ -55,16 +52,4 @@ public class Admin extends User { searchedTA.setAskPermissionAdmin(this); System.out.println("You have successfully asked " + searchedTA.getUsername() + " to see their 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 8b47e4b..36c2c29 100644 --- a/src/main/java/softeng/g4/user/Student.java +++ b/src/main/java/softeng/g4/user/Student.java @@ -18,7 +18,7 @@ public class Student extends UserStudent { } // Adds appointment with the corresponding TeachingAssistant - public void setAppointment(String date, String TAUsername, + 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")) { diff --git a/src/main/java/softeng/g4/userlist.txt b/src/main/java/softeng/g4/userlist.txt index 201e402f45bbcc945d1b96c0f16a45d99010798d..1c662920da0e6f483c3ed33d82a6cf9da9d0f392 100644 GIT binary patch delta 108 zcmeyxcY<%i0uIkAb+60+qm4JN$Y)k(I$~7H#69Yp6l##Q32AVRtzH5OBgs3vrEDHDgeOf BBAoyL delta 159 zcmX@X_ls}B0*+s%X@