From ce387915e30bf5d9a5d4bd4deedb9dc295aa39a0 Mon Sep 17 00:00:00 2001 From: jltng Date: Wed, 30 Nov 2022 22:32:20 -0500 Subject: [PATCH] renamed screens package to match use case package, further debugging not qqc ne fonctionne pas --- src/main/java/CourseCreationMain.java | 42 +++++++++++++ src/main/java/CourseEnrolmentMain.java | 40 +++++++++++++ src/main/java/Main.java | 6 -- .../CourseCreationController.java | 2 +- .../CourseCreationFailed.java | 2 +- .../CourseCreationPresenter.java | 2 +- .../CourseCreationScreen.java | 11 ++-- .../CourseEnrolmentController.java | 2 +- .../CourseEnrolmentFailed.java | 2 +- .../CourseEnrolmentPresenter.java | 2 +- .../CourseEnrolmentScreen.java | 3 +- .../CourseFoundScreen.java | 2 +- .../FileCourse.java | 47 ++++++++++++--- .../InMemoryCourse.java | 6 +- .../CourseCreationDsGateway.java | 4 +- .../CourseCreationInteractor.java | 27 +++++++-- .../CourseEnrolmentDsGateway.java | 25 ++++---- .../CourseEnrolmentInteractor.java | 17 ++++-- .../CourseEnrolmentRequestModel.java | 6 ++ .../read_write/CourseReadWrite.java | 59 ------------------- .../CourseCreationInteractorTest.java | 2 + .../CourseEnrolmentInteractorTest.java | 8 +++ .../CourseUnitTest.java | 4 +- 23 files changed, 205 insertions(+), 116 deletions(-) create mode 100644 src/main/java/CourseCreationMain.java create mode 100644 src/main/java/CourseEnrolmentMain.java rename src/main/java/screens/{courses_features => course_features}/CourseCreationController.java (96%) rename src/main/java/screens/{courses_features => course_features}/CourseCreationFailed.java (80%) rename src/main/java/screens/{courses_features => course_features}/CourseCreationPresenter.java (96%) rename src/main/java/screens/{courses_features => course_features}/CourseCreationScreen.java (94%) rename src/main/java/screens/{courses_features => course_features}/CourseEnrolmentController.java (95%) rename src/main/java/screens/{courses_features => course_features}/CourseEnrolmentFailed.java (80%) rename src/main/java/screens/{courses_features => course_features}/CourseEnrolmentPresenter.java (96%) rename src/main/java/screens/{courses_features => course_features}/CourseEnrolmentScreen.java (98%) rename src/main/java/screens/{courses_features => course_features}/CourseFoundScreen.java (96%) rename src/main/java/screens/{courses_features => course_features}/FileCourse.java (54%) rename src/main/java/screens/{courses_features => course_features}/InMemoryCourse.java (83%) delete mode 100644 src/main/java/use_cases/task_management/read_write/CourseReadWrite.java rename src/test/java/{ => course_features_use_case}/CourseCreationInteractorTest.java (75%) create mode 100644 src/test/java/course_features_use_case/CourseEnrolmentInteractorTest.java rename src/test/java/{ => course_features_use_case}/CourseUnitTest.java (85%) diff --git a/src/main/java/CourseCreationMain.java b/src/main/java/CourseCreationMain.java new file mode 100644 index 0000000..5805536 --- /dev/null +++ b/src/main/java/CourseCreationMain.java @@ -0,0 +1,42 @@ +import entities.CourseMap; +import screens.course_features.*; +import use_cases.course_features.course_creation_use_case.CourseCreationDsGateway; +import use_cases.course_features.course_creation_use_case.CourseCreationInputBoundary; +import use_cases.course_features.course_creation_use_case.CourseCreationInteractor; +import use_cases.course_features.course_creation_use_case.CourseCreationOutputBoundary; + +import javax.swing.*; +import java.awt.*; +import java.io.IOException; + +public class CourseCreationMain { + public static void main(String[] args) { + + // Build the main program window + JFrame application = new JFrame("Course Creation Example!"); + CardLayout cardLayout = new CardLayout(); + JPanel screens = new JPanel(cardLayout); + application.add(screens); + + // Create parts to plug into use case + entities engine + CourseCreationDsGateway course; + try { + course = new FileCourse("courses.ser"); +// course = new InMemoryCourse(); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException("Could not create file."); + } + + CourseCreationOutputBoundary presenter = new CourseCreationPresenter(); + CourseMap courseMap = new CourseMap(); + CourseCreationInputBoundary interactor = new CourseCreationInteractor(course, presenter, courseMap); + CourseCreationController controller = new CourseCreationController(interactor); + + // Build the GUI, plugging in the parts + CourseCreationScreen createScreen = new CourseCreationScreen(controller, screens, cardLayout); + screens.add(createScreen, "Create a new course"); + cardLayout.show(screens, "create a new course"); + application.pack(); + application.setVisible(true); + } +} diff --git a/src/main/java/CourseEnrolmentMain.java b/src/main/java/CourseEnrolmentMain.java new file mode 100644 index 0000000..c7a0aa4 --- /dev/null +++ b/src/main/java/CourseEnrolmentMain.java @@ -0,0 +1,40 @@ +import entities.CourseMap; +import screens.course_features.*; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentDsGateway; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentInputBoundary; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentInteractor; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentOutputBoundary; + +import javax.swing.*; +import java.awt.*; + +public class CourseEnrolmentMain { + public static void main(String[] args) { + + // Build the main program window + JFrame application = new JFrame("Course Enrolment Example!"); + CardLayout cardLayout = new CardLayout(); + JPanel screens = new JPanel(cardLayout); + application.add(screens); + + // Create parts to plug into use case + entities engine + CourseEnrolmentDsGateway course = null; + + CourseEnrolmentOutputBoundary presenter = new CourseEnrolmentPresenter(); + + // not to be initialized, for the sake of running only + CourseMap courseMap = new CourseMap(); + // not to be initialized, for the sake of running only + + CourseEnrolmentInputBoundary interactor = new CourseEnrolmentInteractor( + course, presenter, courseMap, "studentid"); + CourseEnrolmentController controller = new CourseEnrolmentController(interactor); + + // Build GUI, plug in parts + CourseEnrolmentScreen enrolmentScreen = new CourseEnrolmentScreen(controller); + screens.add(enrolmentScreen, "Enrol in a course"); + cardLayout.show(screens, "enrol in course"); + application.pack(); + application.setVisible(true); + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 0158f0a..7ad21aa 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,21 +2,15 @@ import screens.*; import screens.calendar_scheduler.*; import screens.course_progress.*; -import screens.courses_features.*; import screens.login_registration.*; import screens.task_management.event_creation_screens.*; import use_cases.course_features.course_creation_use_case.*; import use_cases.course_tracker.progress_tracker_use_case.*; -import screens.collaborative_task_scheduling.*; -import use_cases.collaborative_task_scheduling.scheduling_ct_use_case.*; -import use_cases.calendar_scheduler.schedule_conflict_use_case.ScheduleConflictPresenter; -import use_cases.calendar_scheduler.scheduler_use_case.SchedulerPresenter; import use_cases.login_registration.user_register_usecase.*; import use_cases.task_management.event_creation_use_case.*; import javax.swing.*; import java.awt.*; -import java.io.IOException; import java.util.HashMap; public class Main { diff --git a/src/main/java/screens/courses_features/CourseCreationController.java b/src/main/java/screens/course_features/CourseCreationController.java similarity index 96% rename from src/main/java/screens/courses_features/CourseCreationController.java rename to src/main/java/screens/course_features/CourseCreationController.java index f41d078..d306a54 100644 --- a/src/main/java/screens/courses_features/CourseCreationController.java +++ b/src/main/java/screens/course_features/CourseCreationController.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; import use_cases.course_features.course_creation_use_case.CourseCreationInputBoundary; import use_cases.course_features.course_creation_use_case.CourseCreationRequestModel; diff --git a/src/main/java/screens/courses_features/CourseCreationFailed.java b/src/main/java/screens/course_features/CourseCreationFailed.java similarity index 80% rename from src/main/java/screens/courses_features/CourseCreationFailed.java rename to src/main/java/screens/course_features/CourseCreationFailed.java index 87a422c..b198745 100644 --- a/src/main/java/screens/courses_features/CourseCreationFailed.java +++ b/src/main/java/screens/course_features/CourseCreationFailed.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; public class CourseCreationFailed extends RuntimeException { public CourseCreationFailed(String error) { diff --git a/src/main/java/screens/courses_features/CourseCreationPresenter.java b/src/main/java/screens/course_features/CourseCreationPresenter.java similarity index 96% rename from src/main/java/screens/courses_features/CourseCreationPresenter.java rename to src/main/java/screens/course_features/CourseCreationPresenter.java index 1a7e747..8cb20f8 100644 --- a/src/main/java/screens/courses_features/CourseCreationPresenter.java +++ b/src/main/java/screens/course_features/CourseCreationPresenter.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; // Interface adapters layer diff --git a/src/main/java/screens/courses_features/CourseCreationScreen.java b/src/main/java/screens/course_features/CourseCreationScreen.java similarity index 94% rename from src/main/java/screens/courses_features/CourseCreationScreen.java rename to src/main/java/screens/course_features/CourseCreationScreen.java index 4ee988c..36cda0d 100644 --- a/src/main/java/screens/courses_features/CourseCreationScreen.java +++ b/src/main/java/screens/course_features/CourseCreationScreen.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; // Framework / Drivers layer @@ -77,6 +77,7 @@ public CourseCreationScreen(CourseCreationController controller, JPanel screens, /** * React to a button click which triggers the corresponding use case + * NEED TO FIX THIS!!! */ @Override public void actionPerformed(ActionEvent evt) { @@ -84,16 +85,16 @@ public void actionPerformed(ActionEvent evt) { if (evt.getActionCommand().equals("Cancel")) { screenLayout.show(screens, "main"); } else if (evt.getActionCommand().equals("Save")) { - try { +// try { // initialize new Arraylist and add task ArrayList tasks = new ArrayList<>(); tasks.add(taskName.getText()); courseCreationController.create(courseName.getText(), courseInstructor.getText(), tasks); JOptionPane.showMessageDialog(this, "Course successful created."); - } catch (Exception e) { - JOptionPane.showMessageDialog(this, e.getMessage()); - } +// } catch (Exception e) { +// JOptionPane.showMessageDialog(this, e.getMessage()); +// } } } } diff --git a/src/main/java/screens/courses_features/CourseEnrolmentController.java b/src/main/java/screens/course_features/CourseEnrolmentController.java similarity index 95% rename from src/main/java/screens/courses_features/CourseEnrolmentController.java rename to src/main/java/screens/course_features/CourseEnrolmentController.java index 790e5c7..d2340be 100644 --- a/src/main/java/screens/courses_features/CourseEnrolmentController.java +++ b/src/main/java/screens/course_features/CourseEnrolmentController.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentInputBoundary; import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentRequestModel; diff --git a/src/main/java/screens/courses_features/CourseEnrolmentFailed.java b/src/main/java/screens/course_features/CourseEnrolmentFailed.java similarity index 80% rename from src/main/java/screens/courses_features/CourseEnrolmentFailed.java rename to src/main/java/screens/course_features/CourseEnrolmentFailed.java index 42b2f9d..1d13b2f 100644 --- a/src/main/java/screens/courses_features/CourseEnrolmentFailed.java +++ b/src/main/java/screens/course_features/CourseEnrolmentFailed.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; public class CourseEnrolmentFailed extends RuntimeException { public CourseEnrolmentFailed(String error) { diff --git a/src/main/java/screens/courses_features/CourseEnrolmentPresenter.java b/src/main/java/screens/course_features/CourseEnrolmentPresenter.java similarity index 96% rename from src/main/java/screens/courses_features/CourseEnrolmentPresenter.java rename to src/main/java/screens/course_features/CourseEnrolmentPresenter.java index 70e9488..9ac226a 100644 --- a/src/main/java/screens/courses_features/CourseEnrolmentPresenter.java +++ b/src/main/java/screens/course_features/CourseEnrolmentPresenter.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; // Interfaces adapters layer diff --git a/src/main/java/screens/courses_features/CourseEnrolmentScreen.java b/src/main/java/screens/course_features/CourseEnrolmentScreen.java similarity index 98% rename from src/main/java/screens/courses_features/CourseEnrolmentScreen.java rename to src/main/java/screens/course_features/CourseEnrolmentScreen.java index 8f9df64..3538e95 100644 --- a/src/main/java/screens/courses_features/CourseEnrolmentScreen.java +++ b/src/main/java/screens/course_features/CourseEnrolmentScreen.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; // Framework/Drivers layer @@ -8,7 +8,6 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; public class CourseEnrolmentScreen extends JPanel implements ActionListener { /** student enters course name */ diff --git a/src/main/java/screens/courses_features/CourseFoundScreen.java b/src/main/java/screens/course_features/CourseFoundScreen.java similarity index 96% rename from src/main/java/screens/courses_features/CourseFoundScreen.java rename to src/main/java/screens/course_features/CourseFoundScreen.java index cf404b9..72172d0 100644 --- a/src/main/java/screens/courses_features/CourseFoundScreen.java +++ b/src/main/java/screens/course_features/CourseFoundScreen.java @@ -1,4 +1,4 @@ -package screens.courses_features; +package screens.course_features; // Framework/Driver layer diff --git a/src/main/java/screens/courses_features/FileCourse.java b/src/main/java/screens/course_features/FileCourse.java similarity index 54% rename from src/main/java/screens/courses_features/FileCourse.java rename to src/main/java/screens/course_features/FileCourse.java index 1ea7d63..238cca0 100644 --- a/src/main/java/screens/courses_features/FileCourse.java +++ b/src/main/java/screens/course_features/FileCourse.java @@ -1,14 +1,17 @@ -package screens.courses_features; +package screens.course_features; import use_cases.course_features.course_creation_use_case.CourseCreationDsGateway; import use_cases.course_features.course_creation_use_case.CourseCreationRequestModel; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentDsGateway; +import use_cases.course_features.course_enrolment_use_case.CourseEnrolmentRequestModel; import java.io.*; -import java.util.ArrayList; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.HashMap; import java.util.Map; -public class FileCourse implements CourseCreationDsGateway { +public class FileCourse implements CourseCreationDsGateway, CourseEnrolmentDsGateway { /** * is this supposed to be String to Request Model OR String to Course */ @@ -20,8 +23,17 @@ public class FileCourse implements CourseCreationDsGateway { * @param path - */ public FileCourse(String path) throws IOException, ClassNotFoundException { - this.courses = readFromFile(); +// this.courses = readFromFile(); this.filePath = path; + + // check if path / file exists + // if so, read existing file, if not, create and write empty map to new file + if (Files.exists(Path.of(path))) { + this.courses = readFromFile(); + } else { + this.courses = new HashMap(); + save(); + } } /** @@ -31,10 +43,10 @@ public FileCourse(String path) throws IOException, ClassNotFoundException { public HashMap readFromFile() throws IOException, ClassNotFoundException { FileInputStream fileReader = new FileInputStream(this.filePath); ObjectInputStream in = new ObjectInputStream(fileReader); - HashMap courseMap = (HashMap) in.readObject(); + HashMap f = (HashMap) in.readObject(); in.close(); fileReader.close(); - return courseMap; + return f; } /** @@ -42,11 +54,15 @@ public HashMap readFromFile() throws IOExcep * @param requestModel the course info that is being saved */ @Override - public void saveCourse(CourseCreationRequestModel requestModel) { + public void save(CourseCreationRequestModel requestModel) throws IOException { courses.put(requestModel.getCourseID(), requestModel); -// this.saveCourse(); + this.save(); } - private void saveCourse() throws IOException { + + /** + * writes the map of course ids to CourseCreationRequestModel objects into the Course database file + */ + private void save() throws IOException { FileOutputStream fileWriter = new FileOutputStream(filePath); ObjectOutputStream out = new ObjectOutputStream(fileWriter); out.writeObject(courses); @@ -54,6 +70,10 @@ private void saveCourse() throws IOException { fileWriter.close(); } + /** + * return whether a course exists with the course identifier + * @param courseIdentifier the course id to check + */ @Override public boolean existsByCourseID(String courseIdentifier) { return courses.containsKey(courseIdentifier); @@ -62,4 +82,13 @@ public boolean existsByCourseID(String courseIdentifier) { public Map getCourses() { return this.courses; } + + @Override + public boolean existsByStudent(String studentIdentifier) { + return courses.containsKey(studentIdentifier); + } + + public void save(CourseEnrolmentRequestModel requestModel) { + } + } \ No newline at end of file diff --git a/src/main/java/screens/courses_features/InMemoryCourse.java b/src/main/java/screens/course_features/InMemoryCourse.java similarity index 83% rename from src/main/java/screens/courses_features/InMemoryCourse.java rename to src/main/java/screens/course_features/InMemoryCourse.java index 46b6b91..df2dcd0 100644 --- a/src/main/java/screens/courses_features/InMemoryCourse.java +++ b/src/main/java/screens/course_features/InMemoryCourse.java @@ -1,4 +1,6 @@ -package screens.courses_features; +package screens.course_features; + +// not needed for functionality, only for testing import use_cases.course_features.course_creation_use_case.CourseCreationDsGateway; import use_cases.course_features.course_creation_use_case.CourseCreationRequestModel; @@ -23,7 +25,7 @@ public boolean existsByCourseID(String identifier) { * @param requestModel the data to save */ @Override - public void saveCourse(CourseCreationRequestModel requestModel) { + public void save(CourseCreationRequestModel requestModel) { System.out.println("Save " + requestModel.getCourseID()); } } diff --git a/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationDsGateway.java b/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationDsGateway.java index 19200df..d655aaa 100644 --- a/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationDsGateway.java +++ b/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationDsGateway.java @@ -2,9 +2,11 @@ // Use case layer +import java.io.IOException; + public interface CourseCreationDsGateway { // checks if the course is already in the course map by its unique id boolean existsByCourseID(String courseIdentifier); - void saveCourse(CourseCreationRequestModel requestModel); + void save(CourseCreationRequestModel requestModel) throws IOException; } diff --git a/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationInteractor.java b/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationInteractor.java index 3bda6ea..9171a2b 100644 --- a/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationInteractor.java +++ b/src/main/java/use_cases/course_features/course_creation_use_case/CourseCreationInteractor.java @@ -3,9 +3,8 @@ // Use case layer import entities.*; -//import read_write.CourseReadWrite; -//import read_write.TaskReadWrite; +import java.io.IOException; import java.util.ArrayList; public class CourseCreationInteractor implements CourseCreationInputBoundary { @@ -40,6 +39,14 @@ public CourseCreationResponseModel create(CourseCreationRequestModel requestMode return courseCreationOutputBoundary.prepareFailView("Course already exists."); } + // need to check that task ids entered exist in the Task database +// ArrayList courseTasks = requestModel.getTasks(); +// for (String task : courseTasks) { +// if (TaskMap.findTask(task) == null) { +// return courseCreationOutputBoundary.prepareFailView("one of the IDs does not correspond with a task."); +// } +// } + // checks passed; course can be created // create a new course @@ -48,14 +55,22 @@ public CourseCreationResponseModel create(CourseCreationRequestModel requestMode // course successfully created and saved CourseCreationRequestModel courseCreationModel = new CourseCreationRequestModel(course.getCourseName(), course.getCourseInstructor(), course.getTasks()); - courseCreationDSGateway.saveCourse(courseCreationModel); + try { + courseCreationDSGateway.save(courseCreationModel); + } catch (IOException e) { + throw new RuntimeException(e); + } + // NEW: + // extract tasks array + + // OLD // tasks from course (task id will be course name + task number / index of task in arraylist) - ArrayList courseTasks = course.getTasks(); - for (String task : courseTasks) { +// ArrayList courseTasks = course.getTasks(); +// for (String task : courseTasks) { // need to initialize new task to add course tasks to TaskMap, but unable to since Task is abstract // TaskMap.addTask(course.getCourseName() + courseTasks.indexOf(task), task); - } +// } // save course to file // CourseReadWrite crw = new CourseReadWrite("src/data/CourseMap"); diff --git a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentDsGateway.java b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentDsGateway.java index 579a56d..a068206 100644 --- a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentDsGateway.java +++ b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentDsGateway.java @@ -1,14 +1,13 @@ -// don't think this is needed? - - -//package course_enrolment_use_case; -// -//// Use case layer -// -//public interface CourseEnrolmentDsGateway { -// // checks if student is in the course through the students argument of the Course -// // object (value) from the course id (key) -// boolean existsByStudent(String studentIdentifier); -// +package use_cases.course_features.course_enrolment_use_case; + + +// Use case layer + +public interface CourseEnrolmentDsGateway { + // checks if student is in the course through the students argument of the Course + // object (value) from the course id (key) + boolean existsByStudent(String studentIdentifier); + void save(CourseEnrolmentRequestModel requestModel); + // void saveStudent(CourseEnrolmentRequestModel requestModel); -//} +} diff --git a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentInteractor.java b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentInteractor.java index c95f480..a5f7020 100644 --- a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentInteractor.java +++ b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentInteractor.java @@ -8,12 +8,15 @@ import java.util.ArrayList; public class CourseEnrolmentInteractor implements CourseEnrolmentInputBoundary { + + final CourseEnrolmentDsGateway courseEnrolmentDsGateway; final CourseEnrolmentOutputBoundary courseEnrolmentOutputBoundary; final CourseMap courseMap; final String studentID; - public CourseEnrolmentInteractor(CourseEnrolmentOutputBoundary courseEnrolmentOutputBoundary, + public CourseEnrolmentInteractor(CourseEnrolmentDsGateway courseEnrolmentDsGateway, CourseEnrolmentOutputBoundary courseEnrolmentOutputBoundary, CourseMap courseMap, String studentID) { + this.courseEnrolmentDsGateway = courseEnrolmentDsGateway; this.courseEnrolmentOutputBoundary = courseEnrolmentOutputBoundary; this.courseMap = courseMap; this.studentID = studentID; @@ -61,16 +64,20 @@ public CourseEnrolmentResponseModel enrol(CourseEnrolmentRequestModel requestMod * wouldn't make sense to initialize by creating a new StudentUser because i shouldn't be able to * 'get' the password?**/ StudentUser user = new StudentUser(requestModel.getStudentID(),"helpwhatispassword"); + Course course = new Course(requestModel.getCourseName(), requestModel.getCourseInstructor(), requestModel.getTasks()); // append each task array to student user's task list for (String task : courseTasks ) { user.getToDoList().add(task); } - /** don't think anything in this chunk is needed: + // don't think anything in this chunk is needed: // tasks successfully added and saved - CourseEnrolmentRequestModel courseEnrolmentModel = new CourseEnrolmentRequestModel(user.get); + CourseEnrolmentRequestModel courseEnrolmentModel = new CourseEnrolmentRequestModel( + course.getCourseName(), course.getCourseInstructor(), user.getName()); // do I even need to save anything - courseEnrolmentDsGateway.saveStudent(courseEnrolmentModel); - **/ + // the answer is yes + // need to save student id to students parameter of course entity ('enrol in course') + courseEnrolmentDsGateway.save(courseEnrolmentModel); + // sent to presenter CourseEnrolmentResponseModel enrolmentResponseModel = new CourseEnrolmentResponseModel( diff --git a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentRequestModel.java b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentRequestModel.java index 64bdcf2..6a25b75 100644 --- a/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentRequestModel.java +++ b/src/main/java/use_cases/course_features/course_enrolment_use_case/CourseEnrolmentRequestModel.java @@ -2,11 +2,14 @@ // Use case layer +import java.util.ArrayList; + public class CourseEnrolmentRequestModel { private String courseName; private String courseInstructor; private final String courseID; private final String studentID; + private ArrayList tasks; public CourseEnrolmentRequestModel(String courseName, String courseInstructor, String studentID) { @@ -42,4 +45,7 @@ public String getCourseID() { public String getStudentID() { return studentID; } + public ArrayList getTasks() { + return tasks; + } } diff --git a/src/main/java/use_cases/task_management/read_write/CourseReadWrite.java b/src/main/java/use_cases/task_management/read_write/CourseReadWrite.java deleted file mode 100644 index 2d78ed4..0000000 --- a/src/main/java/use_cases/task_management/read_write/CourseReadWrite.java +++ /dev/null @@ -1,59 +0,0 @@ -package use_cases.task_management.read_write; - - -import entities.*; - -import java.io.*; -import java.util.ArrayList; - -public class CourseReadWrite implements ReadWriter { - - String path; - - public CourseReadWrite(String path) throws IOException, ClassNotFoundException { - this.path = path; - - CourseMap courses = buildCourseMap(); - saveToFile(courses); - - CourseMap courseMap = readFromFile(); - System.out.println(courseMap); - System.out.println(courses); - } - - /** - * reads in the courseMap from a file (CourseMap.java) - * @return the courseMap that is read - */ - public CourseMap readFromFile() throws IOException, ClassNotFoundException { - FileInputStream fileReader = new FileInputStream("courses.ser"); - ObjectInputStream in = new ObjectInputStream(fileReader); - CourseMap courseMap = (CourseMap) in.readObject(); - return courseMap; - } - - /** - * saves the courseMap to a file (CourseMap.java) - * @param courseMap - object to be serialized - */ - public void saveToFile(Object courseMap) throws IOException { - FileOutputStream fileWriter = new FileOutputStream("courses.ser"); - ObjectOutputStream out = new ObjectOutputStream(fileWriter); - out.writeObject(courseMap); - out.close(); - fileWriter.close(); - } - - /** - * initialization - * @return the courseMap - */ - private static CourseMap buildCourseMap() { - ArrayList courseTasks = new ArrayList(); - courseTasks.add("task1"); - Course csc207 = new Course("csc207", "paulgries", courseTasks); - CourseMap courses = new CourseMap(); - courses.addCourse("csc207paulgries", csc207); - return courses; - } -} diff --git a/src/test/java/CourseCreationInteractorTest.java b/src/test/java/course_features_use_case/CourseCreationInteractorTest.java similarity index 75% rename from src/test/java/CourseCreationInteractorTest.java rename to src/test/java/course_features_use_case/CourseCreationInteractorTest.java index 5b72159..a3112ce 100644 --- a/src/test/java/CourseCreationInteractorTest.java +++ b/src/test/java/course_features_use_case/CourseCreationInteractorTest.java @@ -1,3 +1,5 @@ +package course_features_use_case; + import org.junit.Test; public class CourseCreationInteractorTest { diff --git a/src/test/java/course_features_use_case/CourseEnrolmentInteractorTest.java b/src/test/java/course_features_use_case/CourseEnrolmentInteractorTest.java new file mode 100644 index 0000000..5f05994 --- /dev/null +++ b/src/test/java/course_features_use_case/CourseEnrolmentInteractorTest.java @@ -0,0 +1,8 @@ +package course_features_use_case; + +import static org.junit.jupiter.api.Assertions.*; + +class CourseEnrolmentInteractorTest { + + +} \ No newline at end of file diff --git a/src/test/java/CourseUnitTest.java b/src/test/java/course_features_use_case/CourseUnitTest.java similarity index 85% rename from src/test/java/CourseUnitTest.java rename to src/test/java/course_features_use_case/CourseUnitTest.java index 2eb6dd7..929b724 100644 --- a/src/test/java/CourseUnitTest.java +++ b/src/test/java/course_features_use_case/CourseUnitTest.java @@ -1,3 +1,5 @@ +package course_features_use_case; + import entities.Course; import org.junit.jupiter.api.Test; @@ -23,6 +25,6 @@ public class CourseUnitTest { void huh() { ArrayList task = new ArrayList(); task.add("task1"); - Course course = new Course("csc207", "paulgries", task); + Course course = new Course("course1", "inst1", task); } }