From df4df79012dc294af49fbaa287812ed4b0a26663 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Fri, 1 Nov 2019 17:27:25 +0800 Subject: [PATCH 01/11] update UG DG and Undo for Training Command --- docs/DeveloperGuide.adoc | 76 ++++++------------ docs/UserGuide.adoc | 22 ++--- docs/images/afterUndoStack.png | Bin 0 -> 57363 bytes docs/images/initialStack.png | Bin 0 -> 44111 bytes docs/images/undoSQ.png | Bin 0 -> 189091 bytes .../address/logic/commands/RedoCommand.java | 8 +- .../address/logic/commands/UndoCommand.java | 8 +- src/main/java/seedu/address/model/Model.java | 5 +- .../seedu/address/model/ModelManager.java | 12 +-- .../logic/commands/AddCommandTest.java | 4 +- .../logic/commands/EventCommandTest.java | 4 +- 11 files changed, 65 insertions(+), 74 deletions(-) create mode 100644 docs/images/afterUndoStack.png create mode 100644 docs/images/initialStack.png create mode 100644 docs/images/undoSQ.png diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 6ca61529410..9ed2b23ea1d 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -344,85 +344,61 @@ down the list of people. ** Cons: There may be 2 people with the same name and thus result in an error. === Undo / Redo feature -==== Proposed Implementation +The undo command enables users to undo their previous commands while the redo feature enables users to redo their undone commands. -The undo/redo mechanism is facilitated by `VersionedAddressBook`. -It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. -Additionally, it implements the following operations: +==== Undo Implementation -* `VersionedAddressBook#commit()` -- Saves the current address book state in its history. -* `VersionedAddressBook#undo()` -- Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` -- Restores a previously undone address book state from its history. +The undo feature is facilitated by the HistoryManager. The commands stack and the addressBooks stack in the HistoryManager class are used to govern the undo feature. -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. +The static commands stack keeps track of all the commands that have been executed by the user while the static addressBooks stack keeps track of the corresponding state of the address book following the executed command. -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. +Given below is an example usage scenario and how the undo mechanism behaves at each step. -Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. +Step 1. The user launches the application for the first time. The HistoryManager will be initialised with the initial address book state pushed to the addressBook stack. -image::UndoRedoState0.png[] +image::initialStack.png[width=450] -Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. +Step 2. The user executes the delete 3 command to delete the 3rd person in the Athletick list. The delete command will be pushed into the commands stack in and the new state of the address book (after executing the delete command) will be pushed to the addressBooks stack as well. -image::UndoRedoState1.png[] +image::afterUndoStack.png[width=450] -Step 3. The user executes `add n/David ...` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. +Step 3. The user now decides that deleting the 3rd person in the list was a mistake, and decides to undo the action by executing the undo command. The undo command calls the undo method in the ModelManager which pops the latest Command from the commands stack and +the latest Address Book from the addressBooks stack. This removes the latest action caused by the command that wants to be undone. It then continues to peek at the addressBooks stack to retrieve the Address Book state before the undone Command was executed. -image::UndoRedoState2.png[] - -[NOTE] -If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. - -Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - -image::UndoRedoState3.png[] - -[NOTE] -If the `currentStatePointer` is at index 0, pointing to the initial address book state, then there are no previous address book states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. +image::initialStack.png[width=450] The following sequence diagram shows how the undo operation works: -image::UndoSequenceDiagram.png[] +image::UndoSQ.png[width=450] +Figure 1. Sequence diagram for undo feature -NOTE: The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. +==== Redo Implementation -The `redo` command does the opposite -- it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. +The redo feature is also facilitated by the HistoryManager. The undoneCommands stack and the undoneAddressBooks stack in the HistoryManager class are used to govern the redo feature. -[NOTE] -If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone address book states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. - -Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - -image::UndoRedoState4.png[] +The undoneCommands stack keeps track of commands that have been undone by the user while the undoneAddressBooks stack keeps track of the corresponding state of the address book following the undone command. -Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. We designed it this way because it no longer makes sense to redo the `add n/David ...` command. This is the behavior that most modern desktop applications follow. +How the redo feature works is very similar to how to undo feature work. The difference is that redo utilises the undoneCommands stack and the undoneAddressBook stack. As such, you can also refer to the diagrams in the Undo Implementation. -image::UndoRedoState5.png[] - -The following activity diagram summarizes what happens when a user executes a new command: - -image::CommitActivityDiagram.png[] ==== Design Considerations +This section describes the pros and cons of the current and other alternative implementations of the undo and redo features. ===== Aspect: How undo & redo executes -* **Alternative 1 (current choice):** Saves the entire address book. -** Pros: Easy to implement. +* **Alternative 1 (current choice):** Saves a deep copy of the entire address book after each command into a stack. +** Pros: Easy to implement, and easy for developers to understand. ** Cons: May have performance issues in terms of memory usage. * **Alternative 2:** Individual command knows how to undo/redo by itself. ** Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). ** Cons: We must ensure that the implementation of each individual command are correct. -===== Aspect: Data structure to support the undo/redo commands +====== Reason why we chose alternative 1: +Even though the memory usage of Alternative 2 is lesser, we do not feel that the benefit of the usage of lesser memory outweigh the cost of implementing the alternative. + +Furthermore, as we realise that each time the application starts, the memory of the states of the address book in both alternatives are cleared. +This means that the cost of having alternative 1 is significantly cheaper. As such, we decided to go with the first alternative. -* **Alternative 1 (current choice):** Use a list to store the history of address book states. -** Pros: Easy for new Computer Science student undergraduates to understand, who are likely to be the new incoming developers of our project. -** Cons: Logic is duplicated twice. For example, when a new command is executed, we must remember to update both `HistoryManager` and `VersionedAddressBook`. -* **Alternative 2:** Use `HistoryManager` for undo/redo -** Pros: We do not need to maintain a separate list, and just reuse what is already in the codebase. -** Cons: Requires dealing with commands that have already been undone: We must remember to skip these commands. Violates Single Responsibility Principle and Separation of Concerns as `HistoryManager` now needs to do two different things. -// end::undoredo[] === Adding/editing photo feature ==== Implementation diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index da58f18466d..56e7783efc4 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -636,7 +636,7 @@ This command restores Athletick to the state before the previous command was exe [NOTE] ==== Take note that the `undo` feature only applies to undoable commands. -Undoable commands include: `add`, `delete`, `edit`, `clear`, `attendance` and `training`. +Undoable commands include: `add`, `delete`, `edit`, `clear`, `attendance` and `training` . The `undo` command will not be able to undo commands that cannot be undone. Let’s say you have executed a `list` command to list out all the athletes information in Athletick. @@ -644,18 +644,20 @@ If you were to execute the `undo` command now, the `undo` command will fail beca and that no doable commands were executed before this. The `undo` command reverses previous commands in reverse chronological order. -Let’s say you have executed the `edit` command, followed by the `delete` command. -Executing `undo` now will first reverse the `delete` command. -Executing `undo` again will reverse the `edit` command. +Let’s say you have executed the `edit` command, followed by the `delete` command. If you were +to execute `undo` command now, you will reverse the `delete` command. Executing `undo` again +will then reverse the `edit` command. The `undo` command will reverse the latest command that can be undone. Let’s say you have executed the `delete` command, followed by the `list` command. -Since `list` command is not an undoable command, executing `undo` now will thus reverse the `delete` command. +Since `list` command is not an undoable command, if you were to execute `undo` +command now, you will thus reverse the `delete` command. ==== Let’s say you have accidentally deleted an athlete’s contact (Mohamad Ali) from your list. Instead of having to re-enter Mohamad Ali’s contact information all over again, -you can easily restore all of Mohamad Ali’s details by `undo`-ing the `delete` command that you have just entered. +you can easily restore all of Mohamad Ali’s details by executing the command `undo` to +undo the `delete` command that you have just entered. *What you should do* @@ -665,6 +667,7 @@ Format : `undo` image::undo.png[width=450] + *What you should see* The result box will display the message “Undo Command Success” and you can check that Mohamad Ali’s @@ -686,8 +689,9 @@ The `redo` command reverses previous `undo` commands in reverse chronological or Let’s say that you have executed the `clear` command, followed by the `add` command. Executing the `undo` command now will reverse the `add` command. Executing the `undo` command again will reverse the `clear` command as well. -Following this, executing the `redo` command will reverse the last `undo` command and re-execute the `clear` command. -Executing the `redo` command again will reverse the second-last `undo` command and re-execute the `add` command. +Following this, executing the `redo` command will reverse the most recent `undo` command and re-execute the `clear` +command. +Executing the `redo` command again will reverse the second most recent `undo` command and re-execute the `add` command. ==== Let’s say you have executed the `delete` command to delete Mohamad Ali from your list. @@ -707,7 +711,7 @@ image::redo.png[width=450] The result box will display the message “Redo Command Success” and Mohamad Ali is once again gone from the list! -image::afterUndo.png[width=450] +image::afterRedo.png[width=450] === Upcoming features diff --git a/docs/images/afterUndoStack.png b/docs/images/afterUndoStack.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b37176aefff901efb070c939cde8e278380d03 GIT binary patch literal 57363 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/images/initialStack.png b/docs/images/initialStack.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ef35e2376479a40860f6f25549158e02935ab9 GIT binary patch literal 44111 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 literal 0 HcmV?d00001 diff --git a/docs/images/undoSQ.png b/docs/images/undoSQ.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba81fd8b2fd9b27b4475336e766d8443cc3380f GIT binary patch literal 189091 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 z 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 Date: Sat, 2 Nov 2019 17:49:24 +0800 Subject: [PATCH 02/11] update user guide on gender and undo/redo --- docs/UserGuide.adoc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 56e7783efc4..cf4aa0977e2 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -97,7 +97,7 @@ attendance and performance. Type the athlete's particulars in the format given below. -Format : `add n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]... [i/IMAGE]` +Format : `add n/NAME p/PHONE e/EMAIL g/GENDER a/ADDRESS [t/TAG]... [i/IMAGE]` [NOTE] ==== @@ -108,7 +108,7 @@ You can include any number of tags (zero tags are also allowed) to an athlete an is optional. ==== -Example: `add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 t/backstroke i/john.png` +Example: `add n/John Doe p/98765432 e/johnd@example.com g/male a/311, Clementi Ave 2, #02-25 t/backstroke i/john.png` image::beforeAdd.png[width=450] @@ -636,7 +636,7 @@ This command restores Athletick to the state before the previous command was exe [NOTE] ==== Take note that the `undo` feature only applies to undoable commands. -Undoable commands include: `add`, `delete`, `edit`, `clear`, `attendance` and `training` . +Undoable commands include: `add`, `delete`, `edit`, `clear` and `training`. The `undo` command will not be able to undo commands that cannot be undone. Let’s say you have executed a `list` command to list out all the athletes information in Athletick. @@ -692,11 +692,14 @@ Executing the `undo` command again will reverse the `clear` command as well. Following this, executing the `redo` command will reverse the most recent `undo` command and re-execute the `clear` command. Executing the `redo` command again will reverse the second most recent `undo` command and re-execute the `add` command. + +The `redo` command can only be executed immediately after a `undo` command. ==== Let’s say you have executed the `delete` command to delete Mohamad Ali from your list. You may undo this action and restore Mohamad Ali’s information by executing the `undo` command. (See Undoing a previous command.) + Then, if you decide that you want the contact to remain deleted after all, you may very quickly do so by executing the `redo` command to reverse the `undo` command that you had just executed. From 236d17c4c3374463e9ea8520d9bc0463b8a74130 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Sat, 2 Nov 2019 20:16:14 +0800 Subject: [PATCH 03/11] Update redo to only execute after undo; --- .../address/logic/commands/RedoCommand.java | 19 ++++++++++++------- .../address/logic/commands/UndoCommand.java | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/RedoCommand.java b/src/main/java/seedu/address/logic/commands/RedoCommand.java index eab31219b87..fbe500179ce 100644 --- a/src/main/java/seedu/address/logic/commands/RedoCommand.java +++ b/src/main/java/seedu/address/logic/commands/RedoCommand.java @@ -10,19 +10,24 @@ public class RedoCommand extends Command { public static final String COMMAND_WORD = "redo"; public static final String MESSAGE_SUCCESS = "Redo Command Success"; - public static final String MESSAGE_FAILURE = "Redo Command Failure: You have not " - + "undone any commands. As such, you are unable to redo any commands."; + public static final String MESSAGE_FAILURE_EMPTY_STACK = "Redo Command Failure: No available " + + "commands to be redone."; + public static final String MESSAGE_FAILURE = "Redo Command Failure:" + + " Redo command can only be executed after a undo Command."; @Override public CommandResult execute(Model model) throws CommandException { HistoryManager history = new HistoryManager(); if (history.isRedoneEmpty()) { + return new CommandResult(MESSAGE_FAILURE_EMPTY_STACK); + } else if (!(history.getLatestCommand() instanceof UndoCommand)) { return new CommandResult(MESSAGE_FAILURE); - } - Command redoneCommand = model.redo(); - if (redoneCommand instanceof TrainingCommand) { - return new CommandResult(MESSAGE_SUCCESS, ((TrainingCommand) redoneCommand).getDate(), model); } else { - return new CommandResult(MESSAGE_SUCCESS); + Command redoneCommand = model.redo(); + if (redoneCommand instanceof TrainingCommand) { + return new CommandResult(MESSAGE_SUCCESS, ((TrainingCommand) redoneCommand).getDate(), model); + } else { + return new CommandResult(MESSAGE_SUCCESS); + } } } @Override diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 39d65021eb7..16b6aca345f 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -24,8 +24,8 @@ public CommandResult execute(Model model) throws CommandException { if (history.isUndoneEmpty()) { return new CommandResult(MESSAGE_FAILURE); } else { - System.out.println(HistoryManager.getCommands().pop()); - System.out.println(HistoryManager.getAddressBooks().pop()); + HistoryManager.getCommands().pop(); + HistoryManager.getAddressBooks().pop(); if (history.isUndoneEmpty()) { return new CommandResult(MESSAGE_FAILURE); } From 13549732fff88fbbe22a634e60f41fe3161d8166 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Tue, 5 Nov 2019 23:17:26 +0800 Subject: [PATCH 04/11] comment out gender ui bug --- src/main/java/seedu/address/ui/InformationDisplay.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/ui/InformationDisplay.java b/src/main/java/seedu/address/ui/InformationDisplay.java index 85f11de7785..343107468d4 100644 --- a/src/main/java/seedu/address/ui/InformationDisplay.java +++ b/src/main/java/seedu/address/ui/InformationDisplay.java @@ -59,7 +59,7 @@ public InformationDisplay(Person selectedPerson, String attendance) { address.setText(this.person.getAddress().value); address.setPrefWidth(150); address.setWrapText(true); - gender.setText(this.person.getGender().genderOfPerson); +// gender.setText(this.person.getGender().genderOfPerson); email.setText(this.person.getEmail().value); photo.setImage(new Image(this.person.getPhoto().filePath)); photo.setPreserveRatio(true); From 44c0300fad2301f2a5b997a0f4f7aca906e28f70 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Wed, 6 Nov 2019 00:46:49 +0800 Subject: [PATCH 05/11] Specify undo and redo commands --- .../java/seedu/address/logic/commands/AddCommand.java | 4 ++++ .../address/logic/commands/AttendanceCommand.java | 4 ++++ .../seedu/address/logic/commands/CalendarCommand.java | 4 ++++ .../seedu/address/logic/commands/ClearCommand.java | 4 ++++ .../seedu/address/logic/commands/DeleteCommand.java | 5 ++++- .../address/logic/commands/DeletePersonCommand.java | 4 ++++ .../seedu/address/logic/commands/EditCommand.java | 4 ++++ .../seedu/address/logic/commands/EventCommand.java | 4 ++++ .../seedu/address/logic/commands/ExitCommand.java | 4 ++++ .../seedu/address/logic/commands/FilterCommand.java | 4 ++++ .../seedu/address/logic/commands/FindCommand.java | 4 ++++ .../seedu/address/logic/commands/HelpCommand.java | 4 ++++ .../seedu/address/logic/commands/ListCommand.java | 4 ++++ .../address/logic/commands/PerformanceCommand.java | 4 ++++ .../seedu/address/logic/commands/RedoCommand.java | 11 ++++++++--- .../seedu/address/logic/commands/SelectCommand.java | 4 ++++ .../seedu/address/logic/commands/SortCommand.java | 4 ++++ .../seedu/address/logic/commands/TrainingCommand.java | 4 ++++ .../seedu/address/logic/commands/UndoCommand.java | 11 ++++++++--- .../seedu/address/logic/commands/ViewCommand.java | 4 ++++ src/main/java/seedu/address/model/ModelManager.java | 2 ++ 21 files changed, 90 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index faff50f23cb..c942c1783d8 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -74,4 +74,8 @@ public boolean equals(Object other) { || (other instanceof AddCommand // instanceof handles nulls && toAdd.equals(((AddCommand) other).toAdd)); } + @Override + public String toString() { + return "Add Person Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java index 6fe4444c658..96a467d686e 100644 --- a/src/main/java/seedu/address/logic/commands/AttendanceCommand.java +++ b/src/main/java/seedu/address/logic/commands/AttendanceCommand.java @@ -87,4 +87,8 @@ public CommandResult execute(Model model) throws CommandException { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Attendance Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/CalendarCommand.java b/src/main/java/seedu/address/logic/commands/CalendarCommand.java index c96fe3b6657..2f6d9307fe6 100644 --- a/src/main/java/seedu/address/logic/commands/CalendarCommand.java +++ b/src/main/java/seedu/address/logic/commands/CalendarCommand.java @@ -58,4 +58,8 @@ public boolean equals(Object other) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Calendar Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/ClearCommand.java b/src/main/java/seedu/address/logic/commands/ClearCommand.java index 910d02f4bed..79a9e0c003e 100644 --- a/src/main/java/seedu/address/logic/commands/ClearCommand.java +++ b/src/main/java/seedu/address/logic/commands/ClearCommand.java @@ -24,4 +24,8 @@ public CommandResult execute(Model model) { public boolean isUndoable() { return true; } + @Override + public String toString() { + return "Clear Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/address/logic/commands/DeleteCommand.java index 478d4a14e9a..d2aef59c6d9 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteCommand.java @@ -25,5 +25,8 @@ public abstract class DeleteCommand extends Command { public boolean isUndoable() { return true; } - + @Override + public String toString() { + return "Delete Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java index a2790ab3a83..f65f41131be 100644 --- a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java @@ -49,4 +49,8 @@ public boolean equals(Object other) { || (other instanceof DeletePersonCommand // instanceof handles nulls && targetIndex.equals(((DeletePersonCommand) other).targetIndex)); // state check } + @Override + public String toString() { + return "Delete Person Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index fdf798d4ace..546f0c77fdb 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -254,4 +254,8 @@ && getAddress().equals(e.getAddress()) && getTags().equals(e.getTags()); } } + @Override + public String toString() { + return "Edit Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/EventCommand.java b/src/main/java/seedu/address/logic/commands/EventCommand.java index 518819dcb54..18a99908a5a 100644 --- a/src/main/java/seedu/address/logic/commands/EventCommand.java +++ b/src/main/java/seedu/address/logic/commands/EventCommand.java @@ -52,4 +52,8 @@ public boolean equals(Object other) { || (other instanceof EventCommand // instanceof handles nulls && toAdd.equals(((EventCommand) other).toAdd)); } + @Override + public String toString() { + return "Add Event Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index 0184e2eb774..292162eb02a 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -19,4 +19,8 @@ public CommandResult execute(Model model) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Exit Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/FilterCommand.java b/src/main/java/seedu/address/logic/commands/FilterCommand.java index 501f0799798..12f68a4441d 100644 --- a/src/main/java/seedu/address/logic/commands/FilterCommand.java +++ b/src/main/java/seedu/address/logic/commands/FilterCommand.java @@ -63,4 +63,8 @@ public boolean equals(Object other) { || (other instanceof FilterCommand // instanceof handles nulls && predicate.equals(((FilterCommand) other).predicate)); // state check } + @Override + public String toString() { + return "Filter Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/FindCommand.java b/src/main/java/seedu/address/logic/commands/FindCommand.java index 259baa05d13..5572d4d00c4 100644 --- a/src/main/java/seedu/address/logic/commands/FindCommand.java +++ b/src/main/java/seedu/address/logic/commands/FindCommand.java @@ -42,4 +42,8 @@ public boolean equals(Object other) { || (other instanceof FindCommand // instanceof handles nulls && predicate.equals(((FindCommand) other).predicate)); // state check } + @Override + public String toString() { + return "Find Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index 54734557835..836b9329875 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -22,4 +22,8 @@ public CommandResult execute(Model model) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Help Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index 2785cdbf449..5be286e4525 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -23,4 +23,8 @@ public CommandResult execute(Model model) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "List Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/PerformanceCommand.java b/src/main/java/seedu/address/logic/commands/PerformanceCommand.java index d0835983e18..34f786c15bc 100644 --- a/src/main/java/seedu/address/logic/commands/PerformanceCommand.java +++ b/src/main/java/seedu/address/logic/commands/PerformanceCommand.java @@ -84,4 +84,8 @@ private Record createRecord() { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Add Performance Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/RedoCommand.java b/src/main/java/seedu/address/logic/commands/RedoCommand.java index fbe500179ce..4bfebc13662 100644 --- a/src/main/java/seedu/address/logic/commands/RedoCommand.java +++ b/src/main/java/seedu/address/logic/commands/RedoCommand.java @@ -9,7 +9,7 @@ */ public class RedoCommand extends Command { public static final String COMMAND_WORD = "redo"; - public static final String MESSAGE_SUCCESS = "Redo Command Success"; + public static final String MESSAGE_SUCCESS = "Redo "; public static final String MESSAGE_FAILURE_EMPTY_STACK = "Redo Command Failure: No available " + "commands to be redone."; public static final String MESSAGE_FAILURE = "Redo Command Failure:" @@ -24,9 +24,10 @@ public CommandResult execute(Model model) throws CommandException { } else { Command redoneCommand = model.redo(); if (redoneCommand instanceof TrainingCommand) { - return new CommandResult(MESSAGE_SUCCESS, ((TrainingCommand) redoneCommand).getDate(), model); + return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!", + ((TrainingCommand) redoneCommand).getDate(), model); } else { - return new CommandResult(MESSAGE_SUCCESS); + return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!"); } } } @@ -34,4 +35,8 @@ public CommandResult execute(Model model) throws CommandException { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Redo Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/SelectCommand.java b/src/main/java/seedu/address/logic/commands/SelectCommand.java index 31e8a03494e..bdf591746fa 100644 --- a/src/main/java/seedu/address/logic/commands/SelectCommand.java +++ b/src/main/java/seedu/address/logic/commands/SelectCommand.java @@ -57,4 +57,8 @@ public boolean equals(Object other) { || (other instanceof SelectCommand // instanceof handles nulls && targetIndex.equals(((SelectCommand) other).targetIndex)); // state check } + @Override + public String toString() { + return "Select Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/SortCommand.java b/src/main/java/seedu/address/logic/commands/SortCommand.java index 2d1f133d8d6..e76c924a8a1 100644 --- a/src/main/java/seedu/address/logic/commands/SortCommand.java +++ b/src/main/java/seedu/address/logic/commands/SortCommand.java @@ -24,4 +24,8 @@ public CommandResult execute(Model model) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Sort Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommand.java b/src/main/java/seedu/address/logic/commands/TrainingCommand.java index bf6898f418e..386a01efe64 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommand.java @@ -63,4 +63,8 @@ public List getIndexList() { public boolean isUndoable() { return true; } + @Override + public String toString() { + return "Add Training Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 16b6aca345f..85a6ffb4f4f 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -9,7 +9,7 @@ */ public class UndoCommand extends Command { public static final String COMMAND_WORD = "undo"; - public static final String MESSAGE_SUCCESS = "Undo Command Success"; + public static final String MESSAGE_SUCCESS = "Undo "; public static final String MESSAGE_FAILURE = "Undo Command Failure:" + " No available commands to be undone. " + " Commands that can be undone is as follows: add, delete, edit, clear and training."; @@ -33,13 +33,18 @@ public CommandResult execute(Model model) throws CommandException { } Command undoneCommand = model.undo(); if (undoneCommand instanceof TrainingCommand) { - return new CommandResult(MESSAGE_SUCCESS, ((TrainingCommand) undoneCommand).getDate(), model); + return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!", + ((TrainingCommand) undoneCommand).getDate(), model); } else { - return new CommandResult(MESSAGE_SUCCESS); + return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!"); } } @Override public boolean isUndoable() { return false; } + @Override + public String toString() { + return "Undo Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/ViewCommand.java b/src/main/java/seedu/address/logic/commands/ViewCommand.java index f7732f66f0c..c411403be45 100644 --- a/src/main/java/seedu/address/logic/commands/ViewCommand.java +++ b/src/main/java/seedu/address/logic/commands/ViewCommand.java @@ -53,4 +53,8 @@ public boolean equals(Object other) { public boolean isUndoable() { return false; } + @Override + public String toString() { + return "View Command"; + } } diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 4037c56b2dc..38962bf52b0 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -121,11 +121,13 @@ public Command undo() { ReadOnlyAddressBook undoneAddressBooks = HistoryManager.getAddressBooks().pop(); HistoryManager.getUndoneCommands().push(undoneCommand); HistoryManager.getUndoneAddressBooks().push(undoneAddressBooks); + //undo add training command if (undoneCommand instanceof TrainingCommand) { AthletickDate dateOfTraining = ((TrainingCommand) undoneCommand).getDate(); Training undoneTraining = this.attendance.getTrainingOnDate(dateOfTraining); this.attendance.getTrainings().remove(undoneTraining); HistoryManager.getUndoneTrainingLists().push(undoneTraining); + //undo normal commands } else { ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); addressBook.resetData(afterUndoneState); From fb59414324e7a5099d12a53e50e5dc11621dd86a Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Wed, 6 Nov 2019 00:50:47 +0800 Subject: [PATCH 06/11] checkstyles --- .../java/seedu/address/logic/commands/RedoCommand.java | 7 ++++--- .../java/seedu/address/logic/commands/UndoCommand.java | 7 ++++--- src/main/java/seedu/address/ui/InformationDisplay.java | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/RedoCommand.java b/src/main/java/seedu/address/logic/commands/RedoCommand.java index 4bfebc13662..a53b3658c3d 100644 --- a/src/main/java/seedu/address/logic/commands/RedoCommand.java +++ b/src/main/java/seedu/address/logic/commands/RedoCommand.java @@ -24,10 +24,11 @@ public CommandResult execute(Model model) throws CommandException { } else { Command redoneCommand = model.redo(); if (redoneCommand instanceof TrainingCommand) { - return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!", - ((TrainingCommand) redoneCommand).getDate(), model); + return new CommandResult(MESSAGE_SUCCESS + redoneCommand + + " Success!", ((TrainingCommand) redoneCommand).getDate(), model); } else { - return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!"); + return new CommandResult(MESSAGE_SUCCESS + redoneCommand + + " Success!"); } } } diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 85a6ffb4f4f..620a90d9f21 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -33,10 +33,11 @@ public CommandResult execute(Model model) throws CommandException { } Command undoneCommand = model.undo(); if (undoneCommand instanceof TrainingCommand) { - return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!", - ((TrainingCommand) undoneCommand).getDate(), model); + return new CommandResult(MESSAGE_SUCCESS + undoneCommand + + " Success!", ((TrainingCommand) undoneCommand).getDate(), model); } else { - return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!"); + return new CommandResult(MESSAGE_SUCCESS + undoneCommand + + " Success!"); } } @Override diff --git a/src/main/java/seedu/address/ui/InformationDisplay.java b/src/main/java/seedu/address/ui/InformationDisplay.java index 343107468d4..00d504e4f1e 100644 --- a/src/main/java/seedu/address/ui/InformationDisplay.java +++ b/src/main/java/seedu/address/ui/InformationDisplay.java @@ -59,7 +59,7 @@ public InformationDisplay(Person selectedPerson, String attendance) { address.setText(this.person.getAddress().value); address.setPrefWidth(150); address.setWrapText(true); -// gender.setText(this.person.getGender().genderOfPerson); + //gender.setText(this.person.getGender().genderOfPerson); email.setText(this.person.getEmail().value); photo.setImage(new Image(this.person.getPhoto().filePath)); photo.setPreserveRatio(true); From 0c814077104dfc083c9cd5ef97529ce7d576a7e0 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Wed, 6 Nov 2019 01:11:44 +0800 Subject: [PATCH 07/11] undo add training command --- .../seedu/address/logic/commands/TrainingCommand.java | 2 +- src/main/java/seedu/address/model/Attendance.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommand.java b/src/main/java/seedu/address/logic/commands/TrainingCommand.java index d126a9574af..582548c9a74 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommand.java @@ -72,7 +72,7 @@ public boolean isUndoable() { @Override public String toString() { return "Add Training Command"; - + } /** * Checks with the model if person indexes are valid. */ diff --git a/src/main/java/seedu/address/model/Attendance.java b/src/main/java/seedu/address/model/Attendance.java index d5508d45ff5..2a77fae37a3 100644 --- a/src/main/java/seedu/address/model/Attendance.java +++ b/src/main/java/seedu/address/model/Attendance.java @@ -155,4 +155,13 @@ public List getTrainingAttendanceListOnDate(AthletickDate date) } return null; // With assertion, code should not reach here. } + public Training getTrainingOnDate(AthletickDate date) { + assert (this.hasTrainingOnDate(date)); + for (Training training : trainings) { + if (date.equals(training.getDate())) { + return training; + } + } + return null; // With assertion, code should not reach here. + } } From 91383dafda9e34015eb638749d01021937af5c83 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Wed, 6 Nov 2019 16:35:07 +0800 Subject: [PATCH 08/11] update undo/redo command success message, and change trainings commands undo/redo implementation to similar to addressbook --- docs/DeveloperGuide.adoc | 37 ++++++++++++------- src/main/java/seedu/address/MainApp.java | 7 +++- .../seedu/address/logic/LogicManager.java | 7 ++++ .../address/logic/commands/AddCommand.java | 2 +- .../logic/commands/DeletePersonCommand.java | 6 ++- .../logic/commands/DeleteTrainingCommand.java | 17 ++++++++- .../address/logic/commands/EditCommand.java | 4 +- .../address/logic/commands/RedoCommand.java | 5 ++- .../logic/commands/TrainingCommand.java | 4 +- .../logic/commands/TrainingCommandAbsent.java | 11 +++++- .../commands/TrainingCommandPresent.java | 9 +++++ .../address/logic/commands/UndoCommand.java | 3 ++ .../java/seedu/address/model/Attendance.java | 18 +++++---- src/main/java/seedu/address/model/Model.java | 3 +- .../seedu/address/model/ModelManager.java | 36 +++++++++++------- .../address/model/history/HistoryManager.java | 9 ++++- .../address/model/training/Training.java | 4 ++ 17 files changed, 135 insertions(+), 47 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 9ed2b23ea1d..bf1b5c3f6fe 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -348,22 +348,23 @@ The undo command enables users to undo their previous commands while the redo fe ==== Undo Implementation -The undo feature is facilitated by the HistoryManager. The commands stack and the addressBooks stack in the HistoryManager class are used to govern the undo feature. +The undo feature is facilitated by the `HistoryManager`. The `commands` stack and the `addressBooks` stack in the `HistoryManager` class are used to govern the undo feature. -The static commands stack keeps track of all the commands that have been executed by the user while the static addressBooks stack keeps track of the corresponding state of the address book following the executed command. +The static `commands` stack keeps track of all the commands that have been executed by the user while the static `addressBooks` stack keeps track of the corresponding state of the address book following the executed command. Given below is an example usage scenario and how the undo mechanism behaves at each step. -Step 1. The user launches the application for the first time. The HistoryManager will be initialised with the initial address book state pushed to the addressBook stack. +Step 1. The user launches the application for the first time. The `HistoryManager` will be initialised with the +initial address book state pushed to the `addressBooks` stack. image::initialStack.png[width=450] -Step 2. The user executes the delete 3 command to delete the 3rd person in the Athletick list. The delete command will be pushed into the commands stack in and the new state of the address book (after executing the delete command) will be pushed to the addressBooks stack as well. +Step 2. The user executes the delete 3 command to delete the 3rd person in the Athletick list. The delete command will be pushed into the `commands` stack in and the new state of the address book (after executing the delete command) will be pushed to the `addressBooks` stack as well. image::afterUndoStack.png[width=450] -Step 3. The user now decides that deleting the 3rd person in the list was a mistake, and decides to undo the action by executing the undo command. The undo command calls the undo method in the ModelManager which pops the latest Command from the commands stack and -the latest Address Book from the addressBooks stack. This removes the latest action caused by the command that wants to be undone. It then continues to peek at the addressBooks stack to retrieve the Address Book state before the undone Command was executed. +Step 3. The user now decides that deleting the 3rd person in the list was a mistake, and decides to undo the action by executing the `undo` command. The `undo` command calls the undo method in the `ModelManager` which pops the latest Command from the `commands` stack and +the latest Address Book from the `addressBooks` stack. This removes the latest action caused by the command that wants to be undone. It then continues to peek at the `addressBooks` stack to retrieve the Address Book state before the undone Command was executed. image::initialStack.png[width=450] @@ -374,11 +375,14 @@ Figure 1. Sequence diagram for undo feature ==== Redo Implementation -The redo feature is also facilitated by the HistoryManager. The undoneCommands stack and the undoneAddressBooks stack in the HistoryManager class are used to govern the redo feature. +The redo feature is also facilitated by the `HistoryManager`. The `undoneCommands` stack and the `undoneAddressBooks` stack in the `HistoryManager` class are used to govern the redo feature. -The undoneCommands stack keeps track of commands that have been undone by the user while the undoneAddressBooks stack keeps track of the corresponding state of the address book following the undone command. +The `undoneCommands` stack keeps track of commands that have been undone by the user while the `undoneAddressBooks` stack keeps track of the corresponding state of the address book following the undone command. -How the redo feature works is very similar to how to undo feature work. The difference is that redo utilises the undoneCommands stack and the undoneAddressBook stack. As such, you can also refer to the diagrams in the Undo Implementation. +How the redo feature works is very similar to how the undo feature works. The difference is that redo utilises the +`undoneCommands` stack and the `undoneAddressBooks` stack. As such, you can also refer to the diagrams in the +link:https://github.com/AY1920S1-CS2103T-T12-3/main/blob/master/docs/DeveloperGuide.adoc#undo-redo-feature[Undo +Implementation.] ==== Design Considerations @@ -391,13 +395,18 @@ This section describes the pros and cons of the current and other alternative im ** Cons: May have performance issues in terms of memory usage. * **Alternative 2:** Individual command knows how to undo/redo by itself. ** Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). -** Cons: We must ensure that the implementation of each individual command are correct. +** Cons: We must ensure that the implementation of each individual command is correct. ====== Reason why we chose alternative 1: -Even though the memory usage of Alternative 2 is lesser, we do not feel that the benefit of the usage of lesser memory outweigh the cost of implementing the alternative. - -Furthermore, as we realise that each time the application starts, the memory of the states of the address book in both alternatives are cleared. -This means that the cost of having alternative 1 is significantly cheaper. As such, we decided to go with the first alternative. +Even though the memory usage of Alternative 2 is lesser, we do not feel this benefit of lesser memory usage +outweighs the tedious cost of implementing the alternative. + +Furthermore, as we realise that each time the application starts, the memory of the address books states +are cleared. +This means that the cost of having alternative 1 is significantly lesser, as the memory of the address +book states does not accumulate. As such, we +decided to +go with the first alternative. === Adding/editing photo feature diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 7b93d05e5b9..1926832e14e 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -2,6 +2,8 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import java.util.logging.Logger; @@ -25,6 +27,7 @@ import seedu.address.model.ReadOnlyUserPrefs; import seedu.address.model.UserPrefs; import seedu.address.model.history.HistoryManager; +import seedu.address.model.training.Training; import seedu.address.model.util.SampleDataUtil; import seedu.address.storage.AddressBookStorage; import seedu.address.storage.AttendanceStorage; @@ -53,7 +56,7 @@ public class MainApp extends Application { protected Storage storage; protected Model model; protected Config config; - + @Override public void init() throws Exception { logger.info("=============================[ Initializing AddressBook ]==========================="); @@ -77,6 +80,8 @@ public void init() throws Exception { ui = new UiManager(logic, model); HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); + List training = new ArrayList<>(); + HistoryManager.getTrainingLists().push(training); } /** diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 5d95f6b4aa4..24a25decc5c 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -9,13 +9,17 @@ import seedu.address.commons.core.LogsCenter; import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.DeleteTrainingCommand; +import seedu.address.logic.commands.TrainingCommand; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.AddressBookParser; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.Attendance; import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.history.HistoryManager; import seedu.address.model.person.Person; +import seedu.address.model.training.Training; import seedu.address.storage.Storage; /** @@ -42,6 +46,9 @@ public CommandResult execute(String commandText) throws CommandException, ParseE CommandResult commandResult; Command command = addressBookParser.parseCommand(commandText); commandResult = command.execute(model); + if (command instanceof DeleteTrainingCommand || command instanceof TrainingCommand) { + HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(Attendance.getTrainings())); + } HistoryManager.getCommands().push(command); HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index c942c1783d8..a142485e52d 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -76,6 +76,6 @@ public boolean equals(Object other) { } @Override public String toString() { - return "Add Person Command"; + return "Add '" + toAdd + "' Command"; } } diff --git a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java index f65f41131be..56c00b37e53 100644 --- a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java @@ -24,7 +24,8 @@ public class DeletePersonCommand extends DeleteCommand { public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted Person: %1$s"; private final Index targetIndex; - + private Person personToDelete; + public DeletePersonCommand(Index targetIndex) { this.targetIndex = targetIndex; } @@ -39,6 +40,7 @@ public CommandResult execute(Model model) throws CommandException { } Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); + this.personToDelete = personToDelete; model.deletePerson(personToDelete); return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); } @@ -51,6 +53,6 @@ public boolean equals(Object other) { } @Override public String toString() { - return "Delete Person Command"; + return "Delete '" + personToDelete + "' Command"; } } diff --git a/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java b/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java index 3f0345838b4..3a6a3a4f003 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java @@ -7,6 +7,7 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.date.AthletickDate; +import seedu.address.model.training.Training; /** * Deletes a training identified by the {@code date}. @@ -24,15 +25,25 @@ public class DeleteTrainingCommand extends DeleteCommand { public static final String MESSAGE_NO_TRAINING_ON_DATE = "No training found on %s"; private final AthletickDate date; + private Training trainingToBeDeleted; public DeleteTrainingCommand(AthletickDate date) { this.date = date; } + + public Training getTrainingToBeDeleted() { + return this.trainingToBeDeleted; + } + + public AthletickDate getDate() { + return this.date; + } @Override public CommandResult execute(Model model) throws CommandException { if (model.hasTrainingOnDate(date)) { - model.deleteTrainingOnDate(date); + Training trainingToBeDeleted = model.deleteTrainingOnDate(date); + this.trainingToBeDeleted = trainingToBeDeleted; } else { throw new CommandException(String.format(MESSAGE_NO_TRAINING_ON_DATE, date)); } @@ -46,4 +57,8 @@ public boolean equals(Object other) { || (other instanceof DeleteTrainingCommand // instanceof handles nulls && date.equals(((DeleteTrainingCommand) other).date)); // state check } + @Override + public String toString() { + return "Delete '" + trainingToBeDeleted + "' Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 546f0c77fdb..038edee40f5 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -59,6 +59,7 @@ public class EditCommand extends Command { private final Index index; private final EditPersonDescriptor editPersonDescriptor; + private Person editedPerson; /** * @param index of the person in the filtered person list to edit * @param editPersonDescriptor details to edit the person with @@ -82,6 +83,7 @@ public CommandResult execute(Model model) throws CommandException { Person personToEdit = lastShownList.get(index.getZeroBased()); Person editedPerson = createEditedPerson(personToEdit, editPersonDescriptor); + this.editedPerson = editedPerson; if (!personToEdit.isSamePerson(editedPerson) && model.hasPerson(editedPerson)) { throw new CommandException(MESSAGE_DUPLICATE_PERSON); @@ -256,6 +258,6 @@ && getAddress().equals(e.getAddress()) } @Override public String toString() { - return "Edit Command"; + return "Edit '" + editedPerson + "' Command"; } } diff --git a/src/main/java/seedu/address/logic/commands/RedoCommand.java b/src/main/java/seedu/address/logic/commands/RedoCommand.java index a53b3658c3d..18a3bc0549f 100644 --- a/src/main/java/seedu/address/logic/commands/RedoCommand.java +++ b/src/main/java/seedu/address/logic/commands/RedoCommand.java @@ -11,7 +11,7 @@ public class RedoCommand extends Command { public static final String COMMAND_WORD = "redo"; public static final String MESSAGE_SUCCESS = "Redo "; public static final String MESSAGE_FAILURE_EMPTY_STACK = "Redo Command Failure: No available " - + "commands to be redone."; + + "commands to redo."; public static final String MESSAGE_FAILURE = "Redo Command Failure:" + " Redo command can only be executed after a undo Command."; @Override @@ -26,6 +26,9 @@ public CommandResult execute(Model model) throws CommandException { if (redoneCommand instanceof TrainingCommand) { return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!", ((TrainingCommand) redoneCommand).getDate(), model); + } else if (redoneCommand instanceof DeleteTrainingCommand) { + return new CommandResult(MESSAGE_SUCCESS + redoneCommand + + " Success!", ((DeleteTrainingCommand) redoneCommand).getDate(), model); } else { return new CommandResult(MESSAGE_SUCCESS + redoneCommand + " Success!"); diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommand.java b/src/main/java/seedu/address/logic/commands/TrainingCommand.java index 582548c9a74..60b24580653 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommand.java @@ -11,6 +11,7 @@ import seedu.address.model.Model; import seedu.address.model.date.AthletickDate; import seedu.address.model.person.Person; +import seedu.address.model.training.Training; /** * Adds a training session of players specified by the indexes on the specified date. @@ -60,7 +61,8 @@ public List getIndexList() { */ @Override public abstract CommandResult execute(Model model) throws CommandException; - + + public abstract Training getTrainingToAdd(); /** * Indicates whether a TrainingCommand can be undone. * @return Returns true as a TrainingCommand is undoable. diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java b/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java index 753b8a57baa..2c647cd45f6 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java @@ -28,6 +28,7 @@ public class TrainingCommandAbsent extends TrainingCommand { + "Date must be in the format: " + DATE_FORMAT_TYPE_ONE + "\nIndex must be a positive integer\nExample: " + COMMAND_WORD + " " + ABSENT_FLAG + " " + PREFIX_DATE + "20102019 " + PREFIX_INDEXES + " 1 5 7"; + private Training trainingToAdd; /** * Creates a TrainingCommandAbsent to add a training session on {@code date} using the {@code indexList}. * @@ -37,7 +38,10 @@ public class TrainingCommandAbsent extends TrainingCommand { public TrainingCommandAbsent(AthletickDate date, List indexList) { super(date, indexList); } - + + public Training getTrainingToAdd() { + return this.trainingToAdd; + } /** * Executes the TrainingCommandAbsent which adds a training to the Attendance in model. People in indexList are * marked as absent while everyone else is marked as present. @@ -57,6 +61,7 @@ public CommandResult execute(Model model) throws CommandException { // Create training Training training = createTrainingByAbsent(date, model, indexes); + this.trainingToAdd = training; CommandResult result; if (model.hasTrainingOnDate(super.getDate())) { @@ -95,4 +100,8 @@ private static Training createTrainingByAbsent(AthletickDate date, Model model, } return new Training(date, trainingAttendance); } + @Override + public String toString() { + return "Add '" + trainingToAdd + "' Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommandPresent.java b/src/main/java/seedu/address/logic/commands/TrainingCommandPresent.java index 1d222e74edb..3c1a5fac570 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommandPresent.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommandPresent.java @@ -28,6 +28,7 @@ public class TrainingCommandPresent extends TrainingCommand { + "\n" + "Index must be a positive integer\nExample: " + COMMAND_WORD + " " + PREFIX_DATE + "20102019 " + PREFIX_INDEXES + " 1 5 7"; + private Training trainingToAdd; /** * Creates a TrainingCommandPresent to add a training session on {@code date} using the {@code indexList}. * @@ -38,6 +39,9 @@ public TrainingCommandPresent(AthletickDate date, List indexList) { super(date, indexList); } + public Training getTrainingToAdd() { + return this.trainingToAdd; + } /** * Executes the TrainingCommandPresent which adds a training to the Attendance in model. People in indexList are * marked as present while everyone else is marked as absent. @@ -57,6 +61,7 @@ public CommandResult execute(Model model) throws CommandException { // Create training Training training = createTrainingByPresent(date, model, indexes); + this.trainingToAdd = training; CommandResult result; if (model.hasTrainingOnDate(super.getDate())) { @@ -96,4 +101,8 @@ private static Training createTrainingByPresent(AthletickDate date, Model model, } return new Training(date, trainingAttendance); } + @Override + public String toString() { + return "Add '" + trainingToAdd + "' Command"; + } } diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 620a90d9f21..90769954e0f 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -35,6 +35,9 @@ public CommandResult execute(Model model) throws CommandException { if (undoneCommand instanceof TrainingCommand) { return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!", ((TrainingCommand) undoneCommand).getDate(), model); + } else if (undoneCommand instanceof DeleteTrainingCommand) { + return new CommandResult(MESSAGE_SUCCESS + undoneCommand + + " Success!", ((DeleteTrainingCommand) undoneCommand).getDate(), model); } else { return new CommandResult(MESSAGE_SUCCESS + undoneCommand + " Success!"); diff --git a/src/main/java/seedu/address/model/Attendance.java b/src/main/java/seedu/address/model/Attendance.java index 2a77fae37a3..b1a4f63fd35 100644 --- a/src/main/java/seedu/address/model/Attendance.java +++ b/src/main/java/seedu/address/model/Attendance.java @@ -14,10 +14,10 @@ */ public class Attendance { - private List trainings; + private static List trainings; public Attendance() { - this.trainings = new ArrayList<>(); + trainings = new ArrayList<>(); } public Attendance(List trainings) { @@ -27,8 +27,8 @@ public Attendance(List trainings) { /** * Resets all data in the Attendance. */ - public void resetAttendance() { - this.trainings = new ArrayList<>(); + public static void resetAttendance() { + trainings = new ArrayList<>(); } /** @@ -77,7 +77,7 @@ public boolean hasTrainingOnDate(AthletickDate date) { * Removes a training on the specified date. * @param date Training that occurred on this date will be removed. */ - public void deleteTrainingOnDate(AthletickDate date) { + public Training deleteTrainingOnDate(AthletickDate date) { assert(hasTrainingOnDate(date)); int index = 0; while (index < trainings.size()) { @@ -87,10 +87,11 @@ public void deleteTrainingOnDate(AthletickDate date) { } index++; } - trainings.remove(index); + Training trainingToBeDeleted = trainings.remove(index); + return trainingToBeDeleted; } - public List getTrainings() { + public static List getTrainings() { return trainings; } @@ -164,4 +165,7 @@ public Training getTrainingOnDate(AthletickDate date) { } return null; // With assertion, code should not reach here. } + public static void resetTrainingList(List newTrainingList) { + trainings = newTrainingList; + } } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 1fae8362502..362207f21d4 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -61,6 +61,7 @@ public interface Model { /** Returns the AddressBook */ ReadOnlyAddressBook getAddressBook(); ReadOnlyAddressBook getAddressBookDeepCopy(); + List getTrainingsDeepCopy(List trainingsList); Command undo(); Command redo(); @@ -114,7 +115,7 @@ public interface Model { /** * Removes training on {@code date} */ - void deleteTrainingOnDate(AthletickDate date); + Training deleteTrainingOnDate(AthletickDate date); /** * Gets a list of AttendanceEntry on {@code date}, where each entry indicates whether a person was present. diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 9c7435f5687..b15d7a15a69 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -16,6 +16,7 @@ import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.DeleteTrainingCommand; import seedu.address.logic.commands.TrainingCommand; import seedu.address.model.date.AthletickDate; import seedu.address.model.history.HistoryManager; @@ -40,7 +41,6 @@ public class ModelManager implements Model { private final FilteredList filteredPersons; private ReadOnlyAddressBook readOnlyAddressBook; private Person selectedPerson; - private HistoryManager history = new HistoryManager(); /** @@ -118,20 +118,27 @@ public ReadOnlyAddressBook getAddressBookDeepCopy() { deepCopy.getPersons().setPersons(persons); return deepCopy; } - + @Override + public List getTrainingsDeepCopy(List trainingsList) { + List trainingsDeepCopy = new ArrayList<>(); + trainingsDeepCopy.addAll(trainingsList); + return trainingsDeepCopy; + } + @Override public Command undo() { Command undoneCommand = HistoryManager.getCommands().pop(); ReadOnlyAddressBook undoneAddressBooks = HistoryManager.getAddressBooks().pop(); HistoryManager.getUndoneCommands().push(undoneCommand); HistoryManager.getUndoneAddressBooks().push(undoneAddressBooks); - //undo add training command - if (undoneCommand instanceof TrainingCommand) { - AthletickDate dateOfTraining = ((TrainingCommand) undoneCommand).getDate(); - Training undoneTraining = this.attendance.getTrainingOnDate(dateOfTraining); - this.attendance.getTrainings().remove(undoneTraining); - HistoryManager.getUndoneTrainingLists().push(undoneTraining); - //undo normal commands + //undo add/delete training command + if (undoneCommand instanceof TrainingCommand || undoneCommand instanceof DeleteTrainingCommand) { + List undoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().pop()); + HistoryManager.getUndoneTrainingLists().push(undoneTrainingList); + List afterUndoneTrainingList = + this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().peek()); + Attendance.resetTrainingList(afterUndoneTrainingList); + //undo normal addressbook commands } else { ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); addressBook.resetData(afterUndoneState); @@ -145,9 +152,10 @@ public Command redo() { ReadOnlyAddressBook redoneAddressBook = HistoryManager.getUndoneAddressBooks().pop(); HistoryManager.getCommands().push(redoneCommand); HistoryManager.getAddressBooks().push(redoneAddressBook); - if (redoneCommand instanceof TrainingCommand) { - Training redoneTraining = HistoryManager.getUndoneTrainingLists().pop(); - this.attendance.getTrainings().add(redoneTraining); + if (redoneCommand instanceof TrainingCommand || redoneCommand instanceof DeleteTrainingCommand) { + List redoneTrainingLists = getTrainingsDeepCopy(HistoryManager.getUndoneTrainingLists().pop()); + HistoryManager.getTrainingLists().push(redoneTrainingLists); + Attendance.resetTrainingList(getTrainingsDeepCopy(redoneTrainingLists)); } else { addressBook.resetData(redoneAddressBook); } @@ -239,8 +247,8 @@ public boolean hasTrainingOnDate(AthletickDate date) { } @Override - public void deleteTrainingOnDate(AthletickDate date) { - this.attendance.deleteTrainingOnDate(date); + public Training deleteTrainingOnDate(AthletickDate date) { + return this.attendance.deleteTrainingOnDate(date); } @Override diff --git a/src/main/java/seedu/address/model/history/HistoryManager.java b/src/main/java/seedu/address/model/history/HistoryManager.java index 82822084661..616b8f339c5 100644 --- a/src/main/java/seedu/address/model/history/HistoryManager.java +++ b/src/main/java/seedu/address/model/history/HistoryManager.java @@ -1,5 +1,6 @@ package seedu.address.model.history; +import java.util.List; import java.util.Stack; import seedu.address.logic.commands.Command; @@ -14,7 +15,8 @@ public class HistoryManager { private static Stack addressBooks = new Stack<>(); private static Stack undoneCommands = new Stack<>(); private static Stack undoneAddressBooks = new Stack<>(); - private static Stack undoneTrainingLists = new Stack<>(); + private static Stack> trainingLists = new Stack<>(); + private static Stack> undoneTrainingLists = new Stack<>(); public HistoryManager() {} public Command getLatestCommand() { return commands.peek(); @@ -31,7 +33,10 @@ public static Stack getUndoneCommands() { public static Stack getUndoneAddressBooks() { return undoneAddressBooks; } - public static Stack getUndoneTrainingLists() { + public static Stack> getTrainingLists() { + return trainingLists; + } + public static Stack> getUndoneTrainingLists() { return undoneTrainingLists; } public boolean isUndoneEmpty() { diff --git a/src/main/java/seedu/address/model/training/Training.java b/src/main/java/seedu/address/model/training/Training.java index bf8c22068a1..ad1d792d5bb 100644 --- a/src/main/java/seedu/address/model/training/Training.java +++ b/src/main/java/seedu/address/model/training/Training.java @@ -77,4 +77,8 @@ public List getAbsentees() { } return listOfAbsentees; } + @Override + public String toString(){ + return "Training on " + date; + } } From e50f306bb9cb32e23f1e60bc16107ded953cd50c Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Thu, 7 Nov 2019 00:59:43 +0800 Subject: [PATCH 09/11] Undo Edit success --- src/main/java/seedu/address/MainApp.java | 3 +- .../seedu/address/logic/LogicManager.java | 15 ++++---- .../java/seedu/address/model/AddressBook.java | 3 +- .../java/seedu/address/model/Attendance.java | 14 +++---- src/main/java/seedu/address/model/Model.java | 1 + .../seedu/address/model/ModelManager.java | 38 +++++++++++++++++-- .../address/model/training/Training.java | 4 +- 7 files changed, 54 insertions(+), 24 deletions(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 26b1437d02b..3cf07dd58d4 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -84,8 +84,7 @@ public void init() throws Exception { ui = new UiManager(logic, model); HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); - List training = new ArrayList<>(); - HistoryManager.getTrainingLists().push(training); + HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(model.getAttendance().getTrainings())); } /** diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index b8ca6e8cf90..bab843202ce 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -8,20 +8,15 @@ import javafx.collections.ObservableList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.DeleteTrainingCommand; -import seedu.address.logic.commands.TrainingCommand; +import seedu.address.logic.commands.*; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.AddressBookParser; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.Attendance; import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.history.HistoryManager; import seedu.address.model.performance.Event; import seedu.address.model.person.Person; -import seedu.address.model.training.Training; import seedu.address.storage.Storage; /** @@ -47,12 +42,16 @@ public CommandResult execute(String commandText) throws CommandException, ParseE CommandResult commandResult; Command command = addressBookParser.parseCommand(commandText); + System.out.println("Before Logic Manager: TrainingList:" + HistoryManager.getTrainingLists()); + System.out.println("Before Logic Manager: AddressBooks:" + HistoryManager.getAddressBooks()); commandResult = command.execute(model); - if (command instanceof DeleteTrainingCommand || command instanceof TrainingCommand) { - HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(Attendance.getTrainings())); + if (command instanceof DeleteTrainingCommand || command instanceof TrainingCommand || command instanceof EditCommand) { + HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(model.getAttendance().getTrainings())); } HistoryManager.getCommands().push(command); HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); + System.out.println("Logic Manager: TrainingList:" + HistoryManager.getTrainingLists()); + System.out.println("Logic Manager: AddressBooks:" + HistoryManager.getAddressBooks()); try { storage.saveAddressBook(model.getAddressBook()); diff --git a/src/main/java/seedu/address/model/AddressBook.java b/src/main/java/seedu/address/model/AddressBook.java index 20c2b7c9967..2dbf685a5ce 100644 --- a/src/main/java/seedu/address/model/AddressBook.java +++ b/src/main/java/seedu/address/model/AddressBook.java @@ -107,8 +107,9 @@ public void sortByName() { @Override public String toString() { - return persons.asUnmodifiableObservableList().size() + " persons"; +// return persons.asUnmodifiableObservableList().size() + " persons"; // TODO: refine later + return persons.asUnmodifiableObservableList().get(0) + ""; } @Override diff --git a/src/main/java/seedu/address/model/Attendance.java b/src/main/java/seedu/address/model/Attendance.java index 72d31d3fdba..042177c02ca 100644 --- a/src/main/java/seedu/address/model/Attendance.java +++ b/src/main/java/seedu/address/model/Attendance.java @@ -14,7 +14,7 @@ */ public class Attendance { - private static List trainings; + private List trainings; public Attendance() { trainings = new ArrayList<>(); @@ -27,8 +27,8 @@ public Attendance(List trainings) { /** * Resets all data in the Attendance. */ - public static void resetAttendance() { - trainings = new ArrayList<>(); + public void resetAttendance() { + this.trainings = new ArrayList<>(); } /** @@ -102,8 +102,8 @@ public Training deleteTrainingOnDate(AthletickDate date) { return trainingToBeDeleted; } - public static List getTrainings() { - return trainings; + public List getTrainings() { + return this.trainings; } public int getPersonAttendedTrainings(Person person) { @@ -176,7 +176,7 @@ public Training getTrainingOnDate(AthletickDate date) { } return null; // With assertion, code should not reach here. } - public static void resetTrainingList(List newTrainingList) { - trainings = newTrainingList; + public void resetTrainingList(List newTrainingList) { + this.trainings = newTrainingList; } } diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index b8ec2be4105..97d8eedfd78 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -63,6 +63,7 @@ public interface Model { ReadOnlyAddressBook getAddressBook(); ReadOnlyAddressBook getAddressBookDeepCopy(); List getTrainingsDeepCopy(List trainingsList); + HashMap deepCopyHashMap(HashMap mapToCopy); Command undo(); Command redo(); diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index f904a0c4717..2eb75264f84 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Predicate; import java.util.logging.Logger; @@ -17,6 +18,7 @@ import seedu.address.commons.core.LogsCenter; import seedu.address.logic.commands.Command; import seedu.address.logic.commands.DeleteTrainingCommand; +import seedu.address.logic.commands.EditCommand; import seedu.address.logic.commands.TrainingCommand; import seedu.address.model.date.AthletickDate; import seedu.address.model.history.HistoryManager; @@ -121,14 +123,26 @@ public ReadOnlyAddressBook getAddressBookDeepCopy() { @Override public List getTrainingsDeepCopy(List trainingsList) { List trainingsDeepCopy = new ArrayList<>(); - trainingsDeepCopy.addAll(trainingsList); + for (Training training: trainingsList) { + Training trainingDeepCopy = new Training(training.getDate(), + deepCopyHashMap(training.getTrainingAttendance())); + trainingsDeepCopy.add(trainingDeepCopy); + } return trainingsDeepCopy; } - + @Override + public HashMap deepCopyHashMap(HashMap mapToCopy) { + HashMap deepCopy = new HashMap<>(); + for (Map.Entry entry: mapToCopy.entrySet()) { + deepCopy.put(entry.getKey(), entry.getValue()); + } + return deepCopy; + } @Override public Command undo() { Command undoneCommand = HistoryManager.getCommands().pop(); ReadOnlyAddressBook undoneAddressBooks = HistoryManager.getAddressBooks().pop(); + System.out.println("Popped AB: " + undoneAddressBooks); HistoryManager.getUndoneCommands().push(undoneCommand); HistoryManager.getUndoneAddressBooks().push(undoneAddressBooks); //undo add/delete training command @@ -137,8 +151,19 @@ public Command undo() { HistoryManager.getUndoneTrainingLists().push(undoneTrainingList); List afterUndoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().peek()); - Attendance.resetTrainingList(afterUndoneTrainingList); + attendance.resetTrainingList(afterUndoneTrainingList); //undo normal addressbook commands + } else if (undoneCommand instanceof EditCommand) { + ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); + System.out.println("Peek AB: " + afterUndoneState); + addressBook.resetData(afterUndoneState); + List undoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().pop()); + System.out.println("Popped Training: " + undoneTrainingList); + HistoryManager.getUndoneTrainingLists().push(undoneTrainingList); + List afterUndoneTrainingList = + this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().peek()); + System.out.println("Peek Training: " + afterUndoneTrainingList); + attendance.resetTrainingList(afterUndoneTrainingList); } else { ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); addressBook.resetData(afterUndoneState); @@ -155,7 +180,12 @@ public Command redo() { if (redoneCommand instanceof TrainingCommand || redoneCommand instanceof DeleteTrainingCommand) { List redoneTrainingLists = getTrainingsDeepCopy(HistoryManager.getUndoneTrainingLists().pop()); HistoryManager.getTrainingLists().push(redoneTrainingLists); - Attendance.resetTrainingList(getTrainingsDeepCopy(redoneTrainingLists)); + attendance.resetTrainingList(getTrainingsDeepCopy(redoneTrainingLists)); + } else if (redoneCommand instanceof EditCommand) { + List redoneTrainingLists = getTrainingsDeepCopy(HistoryManager.getUndoneTrainingLists().pop()); + HistoryManager.getTrainingLists().push(redoneTrainingLists); + attendance.resetTrainingList(getTrainingsDeepCopy(redoneTrainingLists)); + addressBook.resetData(redoneAddressBook); } else { addressBook.resetData(redoneAddressBook); } diff --git a/src/main/java/seedu/address/model/training/Training.java b/src/main/java/seedu/address/model/training/Training.java index ffd44415f6c..ade2811e12f 100644 --- a/src/main/java/seedu/address/model/training/Training.java +++ b/src/main/java/seedu/address/model/training/Training.java @@ -78,8 +78,8 @@ public List getAbsentees() { return listOfAbsentees; } @Override - public String toString(){ - return "Training on " + date; + public String toString() { + return "Training on " + date + ". Hash: " + this.trainingAttendance; } /** * Replaces person data in the training record. Called when a person is edited. From 8282db0c18f40e69953065c450de70972db1e07a Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Thu, 7 Nov 2019 02:10:15 +0800 Subject: [PATCH 10/11] checkstyles --- src/main/java/seedu/address/MainApp.java | 4 ---- .../java/seedu/address/logic/LogicManager.java | 14 +++++++------- .../logic/commands/DeletePersonCommand.java | 1 - .../logic/commands/DeleteTrainingCommand.java | 6 ------ .../address/logic/commands/TrainingCommand.java | 1 - .../logic/commands/TrainingCommandAbsent.java | 1 - src/main/java/seedu/address/model/AddressBook.java | 3 +-- .../java/seedu/address/model/ModelManager.java | 6 +----- .../address/logic/commands/AddCommandTest.java | 10 +++++++++- .../address/logic/commands/EventCommandTest.java | 10 +++++++++- 10 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 3cf07dd58d4..ad6f2afa4ae 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -2,8 +2,6 @@ import java.io.IOException; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; import java.util.logging.Logger; @@ -27,7 +25,6 @@ import seedu.address.model.ReadOnlyUserPrefs; import seedu.address.model.UserPrefs; import seedu.address.model.history.HistoryManager; -import seedu.address.model.training.Training; import seedu.address.model.util.SampleDataUtil; import seedu.address.storage.AddressBookStorage; import seedu.address.storage.AttendanceStorage; @@ -57,7 +54,6 @@ public class MainApp extends Application { protected Storage storage; protected Model model; protected Config config; - @Override public void init() throws Exception { logger.info("=============================[ Initializing AddressBook ]==========================="); diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index bab843202ce..77964054b8a 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -8,7 +8,11 @@ import javafx.collections.ObservableList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.commands.*; +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.DeleteTrainingCommand; +import seedu.address.logic.commands.EditCommand; +import seedu.address.logic.commands.TrainingCommand; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.AddressBookParser; import seedu.address.logic.parser.exceptions.ParseException; @@ -42,17 +46,13 @@ public CommandResult execute(String commandText) throws CommandException, ParseE CommandResult commandResult; Command command = addressBookParser.parseCommand(commandText); - System.out.println("Before Logic Manager: TrainingList:" + HistoryManager.getTrainingLists()); - System.out.println("Before Logic Manager: AddressBooks:" + HistoryManager.getAddressBooks()); commandResult = command.execute(model); - if (command instanceof DeleteTrainingCommand || command instanceof TrainingCommand || command instanceof EditCommand) { + if (command instanceof DeleteTrainingCommand || command instanceof TrainingCommand + || command instanceof EditCommand) { HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(model.getAttendance().getTrainings())); } HistoryManager.getCommands().push(command); HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); - System.out.println("Logic Manager: TrainingList:" + HistoryManager.getTrainingLists()); - System.out.println("Logic Manager: AddressBooks:" + HistoryManager.getAddressBooks()); - try { storage.saveAddressBook(model.getAddressBook()); storage.saveEvents(model.getPerformance()); diff --git a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java index 8df85d5c2e8..ab261024b03 100644 --- a/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeletePersonCommand.java @@ -24,7 +24,6 @@ public class DeletePersonCommand extends DeleteCommand { private final Index targetIndex; private Person personToDelete; - public DeletePersonCommand(Index targetIndex) { this.targetIndex = targetIndex; } diff --git a/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java b/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java index 990071a1234..e5eb6964c92 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteTrainingCommand.java @@ -30,15 +30,9 @@ public class DeleteTrainingCommand extends DeleteCommand { public DeleteTrainingCommand(AthletickDate date) { this.date = date; } - - public Training getTrainingToBeDeleted() { - return this.trainingToBeDeleted; - } - public AthletickDate getDate() { return this.date; } - @Override public CommandResult execute(Model model) throws CommandException { if (model.hasTrainingOnDate(date)) { diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommand.java b/src/main/java/seedu/address/logic/commands/TrainingCommand.java index 60b24580653..7c9faa05242 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommand.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommand.java @@ -61,7 +61,6 @@ public List getIndexList() { */ @Override public abstract CommandResult execute(Model model) throws CommandException; - public abstract Training getTrainingToAdd(); /** * Indicates whether a TrainingCommand can be undone. diff --git a/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java b/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java index 2c647cd45f6..105f2714e9b 100644 --- a/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java +++ b/src/main/java/seedu/address/logic/commands/TrainingCommandAbsent.java @@ -38,7 +38,6 @@ public class TrainingCommandAbsent extends TrainingCommand { public TrainingCommandAbsent(AthletickDate date, List indexList) { super(date, indexList); } - public Training getTrainingToAdd() { return this.trainingToAdd; } diff --git a/src/main/java/seedu/address/model/AddressBook.java b/src/main/java/seedu/address/model/AddressBook.java index 2dbf685a5ce..20c2b7c9967 100644 --- a/src/main/java/seedu/address/model/AddressBook.java +++ b/src/main/java/seedu/address/model/AddressBook.java @@ -107,9 +107,8 @@ public void sortByName() { @Override public String toString() { -// return persons.asUnmodifiableObservableList().size() + " persons"; + return persons.asUnmodifiableObservableList().size() + " persons"; // TODO: refine later - return persons.asUnmodifiableObservableList().get(0) + ""; } @Override diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 2eb75264f84..b90acf2186e 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -142,7 +142,6 @@ public HashMap deepCopyHashMap(HashMap mapToCo public Command undo() { Command undoneCommand = HistoryManager.getCommands().pop(); ReadOnlyAddressBook undoneAddressBooks = HistoryManager.getAddressBooks().pop(); - System.out.println("Popped AB: " + undoneAddressBooks); HistoryManager.getUndoneCommands().push(undoneCommand); HistoryManager.getUndoneAddressBooks().push(undoneAddressBooks); //undo add/delete training command @@ -152,17 +151,14 @@ public Command undo() { List afterUndoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().peek()); attendance.resetTrainingList(afterUndoneTrainingList); - //undo normal addressbook commands + //undo normla addressbook commands } else if (undoneCommand instanceof EditCommand) { ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); - System.out.println("Peek AB: " + afterUndoneState); addressBook.resetData(afterUndoneState); List undoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().pop()); - System.out.println("Popped Training: " + undoneTrainingList); HistoryManager.getUndoneTrainingLists().push(undoneTrainingList); List afterUndoneTrainingList = this.getTrainingsDeepCopy(HistoryManager.getTrainingLists().peek()); - System.out.println("Peek Training: " + afterUndoneTrainingList); attendance.resetTrainingList(afterUndoneTrainingList); } else { ReadOnlyAddressBook afterUndoneState = HistoryManager.getAddressBooks().peek(); diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 8dd26426b39..60beef025d0 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -185,7 +185,7 @@ public void editPersonTrainingRecords(Person target, Person editedPerson) { } @Override - public void deleteTrainingOnDate(AthletickDate date) { + public Training deleteTrainingOnDate(AthletickDate date) { throw new AssertionError("This method should not be called."); } @@ -204,6 +204,14 @@ public ReadOnlyAddressBook getAddressBookDeepCopy() { throw new AssertionError("This method should not be called."); } @Override + public List getTrainingsDeepCopy(List trainingsList) { + throw new AssertionError("This method should not be called."); + } + @Override + public HashMap deepCopyHashMap(HashMap mapToCopy) { + throw new AssertionError("This method should not be called."); + } + @Override public Command undo() { throw new AssertionError("This method should not be called."); } diff --git a/src/test/java/seedu/address/logic/commands/EventCommandTest.java b/src/test/java/seedu/address/logic/commands/EventCommandTest.java index 54c3421e768..29433e04d0c 100644 --- a/src/test/java/seedu/address/logic/commands/EventCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/EventCommandTest.java @@ -228,7 +228,7 @@ public void editPersonTrainingRecords(Person target, Person editedPerson) { } @Override - public void deleteTrainingOnDate(AthletickDate date) { + public Training deleteTrainingOnDate(AthletickDate date) { throw new AssertionError("This method should not be called."); } @@ -247,6 +247,14 @@ public ReadOnlyAddressBook getAddressBookDeepCopy() { throw new AssertionError("This method should not be called."); } @Override + public List getTrainingsDeepCopy(List trainingsList) { + throw new AssertionError("This method should not be called."); + } + @Override + public HashMap deepCopyHashMap(HashMap mapToCopy) { + throw new AssertionError("This method should not be called."); + } + @Override public Command undo() { throw new AssertionError("This method should not be called."); } From 9246e94d0aaa3cfae1d59f4059884ef36a542c42 Mon Sep 17 00:00:00 2001 From: Lim Jun Hup Date: Thu, 7 Nov 2019 02:52:00 +0800 Subject: [PATCH 11/11] checkstyles --- src/main/java/seedu/address/logic/LogicManager.java | 5 ----- .../java/seedu/address/logic/commands/UndoCommand.java | 1 - .../java/seedu/address/model/history/HistoryManager.java | 7 +------ 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index f4868f232f5..d3aac55c944 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -52,12 +52,7 @@ public CommandResult execute(String commandText) throws CommandException, ParseE HistoryManager.getTrainingLists().push(model.getTrainingsDeepCopy(model.getAttendance().getTrainings())); } HistoryManager.getCommands().push(command); -<<<<<<< HEAD - HistoryManager.getAddressBooks().push(model.getAddressBookDeepCopy()); -======= HistoryManager.getAddressBooks().push(model.getAthletickDeepCopy()); - ->>>>>>> 8038f5b073ce72e9a18558307eb1ee3db3705cf0 try { storage.saveAthletick(model.getAthletick()); storage.saveEvents(model.getPerformance()); diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 90769954e0f..18ee0af3d51 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -20,7 +20,6 @@ public CommandResult execute(Model model) throws CommandException { return new CommandResult(MESSAGE_FAILURE); } while (!history.getLatestCommand().isUndoable()) { - System.out.println(history.getLatestCommand()); if (history.isUndoneEmpty()) { return new CommandResult(MESSAGE_FAILURE); } else { diff --git a/src/main/java/seedu/address/model/history/HistoryManager.java b/src/main/java/seedu/address/model/history/HistoryManager.java index 06545a1c1f3..3e59b5774dc 100644 --- a/src/main/java/seedu/address/model/history/HistoryManager.java +++ b/src/main/java/seedu/address/model/history/HistoryManager.java @@ -14,14 +14,9 @@ public class HistoryManager { private static Stack commands = new Stack<>(); private static Stack addressBooks = new Stack<>(); private static Stack undoneCommands = new Stack<>(); -<<<<<<< HEAD - private static Stack undoneAddressBooks = new Stack<>(); + private static Stack undoneAddressBooks = new Stack<>(); private static Stack> trainingLists = new Stack<>(); private static Stack> undoneTrainingLists = new Stack<>(); -======= - private static Stack undoneAddressBooks = new Stack<>(); - private static Stack undoneTrainingLists = new Stack<>(); ->>>>>>> 8038f5b073ce72e9a18558307eb1ee3db3705cf0 public HistoryManager() {} public Command getLatestCommand() { return commands.peek();