diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f5f39f82bcd..25054c5d0e1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -141,10 +141,18 @@ The `Storage` component, Classes used by multiple components are in the `seedu.addressbook.commons` package.
+ ## **Implementation** This section describes some noteworthy details on how certain features are implemented. +
+ +:information_source: **Note:** +For simplicity, some details such as parsing (`parseIndex`, `parseName`, etc) have been omitted from the implementation details below. + +
+ ### Add tutor feature The "Add Tutor" feature allows users to add a new tutor to the address book. Below, we provide an example usage scenario and a detailed description of how the add tutor mechanism behaves at each step. diff --git a/docs/diagrams/AddScheduleSequenceDiagram.puml b/docs/diagrams/AddScheduleSequenceDiagram.puml index d4e4505b630..9f67e30fa50 100644 --- a/docs/diagrams/AddScheduleSequenceDiagram.puml +++ b/docs/diagrams/AddScheduleSequenceDiagram.puml @@ -8,12 +8,11 @@ participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":AddSchedule\nCommandParser" as AddScheduleCommandParser LOGIC_COLOR participant "add-s:AddSchedule\nCommand" as AddScheduleCommand LOGIC_COLOR participant "result:CommandResult" as CommandResult LOGIC_COLOR - +participant "s:Schedule" as Schedule MODEL_COLOR end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR -participant "s:Schedule" as Schedule MODEL_COLOR end box [-> LogicManager : execute("add-s 1\nst/2023-09-15T09:00\n et/2023-09-15T11:00") activate LogicManager @@ -36,7 +35,7 @@ create AddScheduleCommand AddScheduleCommandParser -> AddScheduleCommand activate AddScheduleCommand -AddScheduleCommand -> AddScheduleCommandParser +AddScheduleCommand --> AddScheduleCommandParser : add-s deactivate AddScheduleCommand @@ -46,7 +45,7 @@ deactivate AddScheduleCommandParser AddScheduleCommandParser -[hidden]-> AddressBookParser destroy AddScheduleCommandParser -AddressBookParser --> LogicManager +AddressBookParser --> LogicManager : add-s deactivate AddressBookParser LogicManager -> AddScheduleCommand : execute() diff --git a/docs/diagrams/AddTutorSequenceDiagram.puml b/docs/diagrams/AddTutorSequenceDiagram.puml index 51d86072dd8..6ba0d4b83dc 100644 --- a/docs/diagrams/AddTutorSequenceDiagram.puml +++ b/docs/diagrams/AddTutorSequenceDiagram.puml @@ -8,7 +8,7 @@ participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":AddTutorCommandParser" as AddTutorCommandParser LOGIC_COLOR participant "person:Person" as Person MODEL_COLOR participant "d:AddTutorCommand" as AddTutorCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR end box box Model MODEL_COLOR_T1 @@ -67,12 +67,12 @@ create CommandResult AddTutorCommand -> CommandResult activate CommandResult -CommandResult --> AddTutorCommand +CommandResult --> AddTutorCommand : r deactivate CommandResult -AddTutorCommand --> LogicManager : result +AddTutorCommand --> LogicManager : r deactivate AddTutorCommand -[<--LogicManager +[<--LogicManager : r deactivate LogicManager @enduml diff --git a/docs/diagrams/ChangeThemeSequenceDiagram.puml b/docs/diagrams/ChangeThemeSequenceDiagram.puml index f5d6b929ef1..c0a150dfd71 100644 --- a/docs/diagrams/ChangeThemeSequenceDiagram.puml +++ b/docs/diagrams/ChangeThemeSequenceDiagram.puml @@ -2,7 +2,7 @@ !include style.puml skinparam ArrowFontStyle plain box Ui UI_COLOR_T1 -participant ":MainWindow" as Ui UI_COLOR +participant ":Ui" as Ui UI_COLOR end box box Logic LOGIC_COLOR_T1 @@ -10,7 +10,7 @@ participant ":LogicManager" as LogicManager LOGIC_COLOR participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":ThemeCommandParser" as ThemeCommandParser LOGIC_COLOR participant "c:ThemeCommand" as ThemeCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR end box [-> Ui : @@ -55,13 +55,13 @@ create CommandResult ThemeCommand -> CommandResult activate CommandResult -CommandResult --> ThemeCommand : result +CommandResult --> ThemeCommand : r deactivate CommandResult -ThemeCommand --> LogicManager : result +ThemeCommand --> LogicManager : r deactivate ThemeCommand -LogicManager --> Ui : result +LogicManager --> Ui : r deactivate LogicManager Ui -> Ui : handle\nChange\nTheme() diff --git a/docs/diagrams/EditScheduleSequenceDiagram.puml b/docs/diagrams/EditScheduleSequenceDiagram.puml index 65446cac3ba..db542c11595 100644 --- a/docs/diagrams/EditScheduleSequenceDiagram.puml +++ b/docs/diagrams/EditScheduleSequenceDiagram.puml @@ -8,12 +8,12 @@ participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":EditSchedule\nCommandParser" as EditScheduleCommandParser LOGIC_COLOR participant "e:EditSchedule\nDescriptor" as EditScheduleDescriptor LOGIC_COLOR participant "d:EditSchedule\nCommand" as EditScheduleCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR +participant "s:Schedule" as EditedSchedule MODEL_COLOR end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR -participant "editedSchedule:Schedule" as EditedSchedule MODEL_COLOR end box [-> LogicManager : execute("edit-s 1\n st/2023-09-15T09:00") @@ -58,28 +58,40 @@ deactivate AddressBookParser LogicManager -> EditScheduleCommand : execute() activate EditScheduleCommand +EditScheduleCommand -> Model ++ : getFilteredPersonList() +return + create EditedSchedule EditScheduleCommand -> EditedSchedule ++ +return s +EditScheduleCommand -> Model ++ : hasSchedule(s) return -EditScheduleCommand -> Model ++ : hasSchedule(editedSchedule) + +EditScheduleCommand -> Model ++ : getAddressBook() return -EditScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, editedSchedule) + +loop number of schedules in model + EditScheduleCommand -> EditedSchedule : isClashing(s) + activate EditedSchedule + EditedSchedule --> EditScheduleCommand + deactivate EditedSchedule +end + +EditScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, s) return EditScheduleCommand -> Model ++ : updateFilteredScheduleList() -deactivate Model - -deactivate Model +return create CommandResult EditScheduleCommand -> CommandResult activate CommandResult -CommandResult --> EditScheduleCommand +CommandResult --> EditScheduleCommand : r deactivate CommandResult -EditScheduleCommand --> LogicManager : result +EditScheduleCommand --> LogicManager : r deactivate EditScheduleCommand -[<--LogicManager +[<--LogicManager : r deactivate LogicManager @enduml diff --git a/docs/diagrams/EditTutorSequenceDiagram.puml b/docs/diagrams/EditTutorSequenceDiagram.puml index bc67eaa0a50..d953eddd790 100644 --- a/docs/diagrams/EditTutorSequenceDiagram.puml +++ b/docs/diagrams/EditTutorSequenceDiagram.puml @@ -7,12 +7,12 @@ participant ":LogicManager" as LogicManager LOGIC_COLOR participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":EditTutorCommandParser" as EditTutorCommandParser LOGIC_COLOR participant "d:EditTutorCommand" as EditTutorCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR +participant "e:Person" as EditedPerson MODEL_COLOR end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR -participant "e:Person" as EditedPerson MODEL_COLOR end box [-> LogicManager : execute("edit-t 1 n/New Name") @@ -52,7 +52,7 @@ activate EditTutorCommand create EditedPerson EditTutorCommand -> EditedPerson ++ -return +return e EditTutorCommand -> Model ++ : hasPerson(e) return @@ -73,12 +73,12 @@ create CommandResult EditTutorCommand -> CommandResult activate CommandResult -CommandResult --> EditTutorCommand +CommandResult --> EditTutorCommand : r deactivate CommandResult -EditTutorCommand --> LogicManager : result +EditTutorCommand --> LogicManager : r deactivate EditTutorCommand -[<--LogicManager +[<--LogicManager : r deactivate LogicManager @enduml diff --git a/docs/diagrams/FindTutorSequenceDiagram.puml b/docs/diagrams/FindTutorSequenceDiagram.puml index 7feb94434fd..01e1c996488 100644 --- a/docs/diagrams/FindTutorSequenceDiagram.puml +++ b/docs/diagrams/FindTutorSequenceDiagram.puml @@ -8,7 +8,7 @@ participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":FindTutorCommandParser" as FindTutorCommandParser LOGIC_COLOR participant "e:NameContains\nKeywordsPredicate" as NameContainsKeywordsPredicate LOGIC_COLOR participant "d:FindTutor\nCommand" as FindTutorCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR end box box Model MODEL_COLOR_T1 @@ -66,12 +66,12 @@ create CommandResult FindTutorCommand -> CommandResult activate CommandResult -CommandResult --> FindTutorCommand +CommandResult --> FindTutorCommand : r deactivate CommandResult -FindTutorCommand --> LogicManager : result +FindTutorCommand --> LogicManager : r deactivate FindTutorCommand -[<--LogicManager +[<--LogicManager : r deactivate LogicManager @enduml diff --git a/docs/diagrams/MarkScheduleSequenceDiagram.puml b/docs/diagrams/MarkScheduleSequenceDiagram.puml index 44cc65b11df..04ab706c223 100644 --- a/docs/diagrams/MarkScheduleSequenceDiagram.puml +++ b/docs/diagrams/MarkScheduleSequenceDiagram.puml @@ -7,12 +7,12 @@ participant ":LogicManager" as LogicManager LOGIC_COLOR participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":MarkScheduleCommandParser" as MarkScheduleCommandParser LOGIC_COLOR participant "d:MarkScheduleCommand" as MarkScheduleCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR +participant "e:Schedule" as EditedSchedule MODEL_COLOR end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR -participant "edited:Schedule" as EditedSchedule MODEL_COLOR end box [-> LogicManager : execute("mark 1 m/1") @@ -53,9 +53,9 @@ activate MarkScheduleCommand create EditedSchedule MarkScheduleCommand -> EditedSchedule ++ -return +return e -MarkScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, editedSchedule) +MarkScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, e) return MarkScheduleCommand -> Model ++ : updateFilteredScheduleList() @@ -67,12 +67,12 @@ create CommandResult MarkScheduleCommand -> CommandResult activate CommandResult -CommandResult --> MarkScheduleCommand +CommandResult --> MarkScheduleCommand : r deactivate CommandResult -MarkScheduleCommand --> LogicManager : result +MarkScheduleCommand --> LogicManager : r deactivate MarkScheduleCommand -[<--LogicManager +[<--LogicManager: r deactivate LogicManager @enduml diff --git a/docs/diagrams/ShowCalendarSequenceDiagram.puml b/docs/diagrams/ShowCalendarSequenceDiagram.puml index 843746f596e..98349563dea 100644 --- a/docs/diagrams/ShowCalendarSequenceDiagram.puml +++ b/docs/diagrams/ShowCalendarSequenceDiagram.puml @@ -7,7 +7,7 @@ participant ":LogicManager" as LogicManager LOGIC_COLOR participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":ShowCalendarCommandParser" as ShowCalendarCommandParser LOGIC_COLOR participant "d:ShowCalendarCommand" as ShowCalendarCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR end box box Model MODEL_COLOR_T1 @@ -61,12 +61,12 @@ create CommandResult ShowCalendarCommand -> CommandResult activate CommandResult -CommandResult --> ShowCalendarCommand +CommandResult --> ShowCalendarCommand : r deactivate CommandResult -ShowCalendarCommand --> LogicManager : result +ShowCalendarCommand --> LogicManager : r deactivate ShowCalendarCommand -[<--LogicManager +[<--LogicManager : r deactivate LogicManager @enduml diff --git a/docs/diagrams/UnmarkScheduleSequenceDiagram.puml b/docs/diagrams/UnmarkScheduleSequenceDiagram.puml index 21a5b73595c..d1445a616a4 100644 --- a/docs/diagrams/UnmarkScheduleSequenceDiagram.puml +++ b/docs/diagrams/UnmarkScheduleSequenceDiagram.puml @@ -7,12 +7,13 @@ participant ":LogicManager" as LogicManager LOGIC_COLOR participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR participant ":UnmarkScheduleCommandParser" as UnmarkScheduleCommandParser LOGIC_COLOR participant "d:UnmarkScheduleCommand" as UnmarkScheduleCommand LOGIC_COLOR -participant ":CommandResult" as CommandResult LOGIC_COLOR +participant "r:CommandResult" as CommandResult LOGIC_COLOR +participant "e:Schedule" as EditedSchedule MODEL_COLOR + end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR -participant "edited:Schedule" as EditedSchedule MODEL_COLOR end box [-> LogicManager : execute("unmark 1") @@ -52,24 +53,22 @@ activate UnmarkScheduleCommand create EditedSchedule UnmarkScheduleCommand -> EditedSchedule ++ -return -UnmarkScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, edited) +return e +UnmarkScheduleCommand -> Model ++ : setSchedule(scheduleToEdit, e) return UnmarkScheduleCommand -> Model ++ : updateFilteredScheduleList() -deactivate Model - -deactivate Model +return create CommandResult UnmarkScheduleCommand -> CommandResult activate CommandResult -CommandResult --> UnmarkScheduleCommand +CommandResult --> UnmarkScheduleCommand: r deactivate CommandResult -UnmarkScheduleCommand --> LogicManager : result +UnmarkScheduleCommand --> LogicManager : r deactivate UnmarkScheduleCommand -[<--LogicManager +[<--LogicManager: r deactivate LogicManager @enduml diff --git a/docs/images/AddScheduleSequenceDiagram.png b/docs/images/AddScheduleSequenceDiagram.png index ca05b9f6a1e..f2508ea6764 100644 Binary files a/docs/images/AddScheduleSequenceDiagram.png and b/docs/images/AddScheduleSequenceDiagram.png differ diff --git a/docs/images/AddTutorSequenceDiagram.png b/docs/images/AddTutorSequenceDiagram.png index d84b5da250d..32fab5bb774 100644 Binary files a/docs/images/AddTutorSequenceDiagram.png and b/docs/images/AddTutorSequenceDiagram.png differ diff --git a/docs/images/ChangeThemeSequenceDiagram.png b/docs/images/ChangeThemeSequenceDiagram.png index 5dfb9a2d38e..e549da575c0 100644 Binary files a/docs/images/ChangeThemeSequenceDiagram.png and b/docs/images/ChangeThemeSequenceDiagram.png differ diff --git a/docs/images/EditScheduleSequenceDiagram.png b/docs/images/EditScheduleSequenceDiagram.png index aa116a2c826..cd36fa1b3ef 100644 Binary files a/docs/images/EditScheduleSequenceDiagram.png and b/docs/images/EditScheduleSequenceDiagram.png differ diff --git a/docs/images/EditTutorSequenceDiagram.png b/docs/images/EditTutorSequenceDiagram.png index 298a4ecbdf2..16227f61872 100644 Binary files a/docs/images/EditTutorSequenceDiagram.png and b/docs/images/EditTutorSequenceDiagram.png differ diff --git a/docs/images/FindTutorSequenceDiagram.png b/docs/images/FindTutorSequenceDiagram.png index 7af364388ca..68d291137af 100644 Binary files a/docs/images/FindTutorSequenceDiagram.png and b/docs/images/FindTutorSequenceDiagram.png differ diff --git a/docs/images/MarkScheduleSequenceDiagram.png b/docs/images/MarkScheduleSequenceDiagram.png index 6c94dfe1719..bf53dcf09c6 100644 Binary files a/docs/images/MarkScheduleSequenceDiagram.png and b/docs/images/MarkScheduleSequenceDiagram.png differ diff --git a/docs/images/ShowCalendarSequenceDiagram.png b/docs/images/ShowCalendarSequenceDiagram.png index b334ed5a5e6..0a0dca57c0b 100644 Binary files a/docs/images/ShowCalendarSequenceDiagram.png and b/docs/images/ShowCalendarSequenceDiagram.png differ diff --git a/docs/images/UnmarkScheduleSequenceDiagram.png b/docs/images/UnmarkScheduleSequenceDiagram.png index 2240a648640..36ac0183b3b 100644 Binary files a/docs/images/UnmarkScheduleSequenceDiagram.png and b/docs/images/UnmarkScheduleSequenceDiagram.png differ