Skip to content

Commit

Permalink
Merge pull request #77 from CSC207-2022F-UofT/feature-6-updates
Browse files Browse the repository at this point in the history
Feature 6 updates
  • Loading branch information
TiareMar authored Dec 5, 2022
2 parents 2f80613 + 7eb5f53 commit 09e95a4
Show file tree
Hide file tree
Showing 30 changed files with 1,379 additions and 426 deletions.
20 changes: 15 additions & 5 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import entities.*;
import screens.*;
import screens.calendar_scheduler.*;
import screens.course_progress.*;
import screens.course_tracker.*;
import screens.course_features.*;
import screens.login_registration.*;
import screens.task_management.task_creation_screens.*;
import use_cases.course_features.course_creation_use_case.*;
import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorInputBoundary;
import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorInteractor;
import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorOutputBoundary;
import use_cases.course_features.course_enrolment_use_case.*;
import use_cases.course_tracker.progress_tracker_use_case.*;
import screens.collaborative_task_scheduling.*;
Expand Down Expand Up @@ -75,9 +78,15 @@ public static void main(String[] args) throws IOException, ClassNotFoundExceptio
SchedulerPresenter schedulerPresenter = new SchedulerResponseFormatter();
ScheduleConflictPresenter scheduleConflictPresenter = new ScheduleConflictResponseFormatter();

ProgressTrackerOutputBoundary trackerPresenter = new ProgressTrackerPresenter();
ProgressTrackerInputBoundary trackerInteractor = new ProgressTrackerInteractor(trackerPresenter);
ProgressTrackerController trackerController = new ProgressTrackerController(trackerInteractor, user, "", TaskMap.getTaskMap(), allUsers, allCourses);
CourseEnrolmentDsGateway courseAccess = new FileCourse("src/main/java/data/courses.ser");
ProgressTrackerScreen progressTrackerScreen = new ProgressTrackerScreen(screens, cardLayout);
ProgressTrackerOutputBoundary trackerPresenter = new ProgressTrackerPresenter(progressTrackerScreen);
ProgressTrackerInputBoundary trackerInteractor = new ProgressTrackerInteractor(trackerPresenter, courseAccess);
ProgressTrackerController trackerController = new ProgressTrackerController(trackerInteractor);

GradeCalculatorOutputBoundary gradePresenter = new GradeCalculatorPresenter(progressTrackerScreen);
GradeCalculatorInputBoundary gradeInteractor = new GradeCalculatorInteractor(gradePresenter, courseAccess);
GradeCalculatorController gradeController = new GradeCalculatorController(gradeInteractor);

ScheduleCTViewInterface scheduleCTOutputView = new ScheduleCTView(cardLayout, screens);
ScheduleCTOutputBoundary scheduleCTPresenter = new ScheduleCTPresenter(scheduleCTOutputView);
Expand Down Expand Up @@ -118,7 +127,8 @@ public static void main(String[] args) throws IOException, ClassNotFoundExceptio
screens.add("scheduleCT", scheduleCTScreen);
screens.add("scheduleCTView", (Component) scheduleCTOutputView);

ProgressTrackerScreen progressTrackerScreen = new ProgressTrackerScreen(trackerController);
progressTrackerScreen.setProgressTrackerController(trackerController);
progressTrackerScreen.setGradeCalculatorController(gradeController);
screens.add("tracker", progressTrackerScreen);

CourseCreationScreen courseCreationScreen = new CourseCreationScreen(courseController, screens, cardLayout);
Expand Down
12 changes: 10 additions & 2 deletions src/main/java/screens/course_features/InMemoryCourse.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,15 @@
import java.util.Map;

public class InMemoryCourse implements CourseCreationDsGateway, CourseEnrolmentDsGateway {
private final Map<String, Course> courses = new HashMap<>();
private Map<String, Course> courses;

public InMemoryCourse() {
this.courses = new HashMap<>();
}

public InMemoryCourse(Map<String, Course> courses) {
this.courses = courses;
}

// populate

Expand Down Expand Up @@ -55,6 +63,6 @@ public ArrayList<String> courseTasks(Course requestModel) {
*/
@Override
public void saveCourse(Course requestModel) {
System.out.println("Save " + requestModel.getCourseID());
courses.put(requestModel.getCourseID(), requestModel);
}
}

This file was deleted.

This file was deleted.

96 changes: 0 additions & 96 deletions src/main/java/screens/course_progress/ProgressTrackerScreen.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package screens.course_tracker;

import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorInputBoundary;
import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorRequestModel;

import java.util.ArrayList;

/**
* Controller for the Grade Calculator Use Case
* Located in the presenter/controller layer
*/
public class GradeCalculatorController {

final GradeCalculatorInputBoundary gradeCalculatorInteractor;

public GradeCalculatorController(GradeCalculatorInputBoundary gradeCalculatorInteractor) {
this.gradeCalculatorInteractor = gradeCalculatorInteractor;
}

void calculateGrade(String courseName, String userInput, ArrayList<String> ungradedTasks) {

GradeCalculatorRequestModel requestModel = new GradeCalculatorRequestModel(courseName, userInput,
ungradedTasks);

gradeCalculatorInteractor.calculateGrade(requestModel);
}
}
33 changes: 33 additions & 0 deletions src/main/java/screens/course_tracker/GradeCalculatorPresenter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package screens.course_tracker;

import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorOutputBoundary;
import use_cases.course_tracker.grade_calculator_use_case.GradeCalculatorResponseModel;


/**
* Presenter for the Grade Calculator use case
* Located in the presenter/controller layer
*/
public class GradeCalculatorPresenter implements GradeCalculatorOutputBoundary {

private final GradeCalculatorViewBoundary screen;

public GradeCalculatorPresenter(GradeCalculatorViewBoundary screen) {
this.screen = screen;
}

@Override
public GradeCalculatorResponseModel display(GradeCalculatorResponseModel responseModel) {
String displayString = "Get an average of " + responseModel.getRequiredGrade() + "% in target tasks.";

GradeCalculatorViewModel viewModel = new GradeCalculatorViewModel(displayString);

screen.showRequiredGrade(viewModel);
return responseModel;
}

@Override
public GradeCalculatorResponseModel failView(String error) {
throw new ProgressTrackingFail(error);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package screens.course_tracker;

/**
* View Boundary for the Grade Calculator use case
* Located in the presenter/controller layer, used to invert the dependency between the view and presenter
*/
public interface GradeCalculatorViewBoundary {
void showRequiredGrade(GradeCalculatorViewModel viewModel);
}
17 changes: 17 additions & 0 deletions src/main/java/screens/course_tracker/GradeCalculatorViewModel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package screens.course_tracker;

/**
* View data object for the GradeCalculator use case
* Located in the presenter/controller layer, used in the dependency inversion between view and presenter
*/
public class GradeCalculatorViewModel {
private final String displayMessage;

public GradeCalculatorViewModel(String displayMessage) {
this.displayMessage = displayMessage;
}

public String getDisplayMessage() {
return displayMessage;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package screens.course_tracker;

import use_cases.course_tracker.progress_tracker_use_case.ProgressTrackerInputBoundary;
import use_cases.course_tracker.progress_tracker_use_case.ProgressTrackerRequestModel;

/**
* Controller for the Progress Tracker Use Case
* Located in the Interface Adapter Layer, triggers the Interactor
*/
public class ProgressTrackerController {

final ProgressTrackerInputBoundary progressInput;

public ProgressTrackerController(ProgressTrackerInputBoundary progressInput) {
this.progressInput = progressInput;
}

void trackProgress(String courseName, String newGradeTaskName, String newGrade,
String newGoalGrade) {
ProgressTrackerRequestModel requestModel = new ProgressTrackerRequestModel(courseName,
newGradeTaskName, newGrade, newGoalGrade);

progressInput.trackProgress(requestModel);
}
}
Loading

0 comments on commit 09e95a4

Please sign in to comment.