From 691b3c176f37043be08fd92e7a70a1e5874c39b2 Mon Sep 17 00:00:00 2001 From: Laptop-Josh Jr Date: Thu, 8 Nov 2018 20:23:42 +0800 Subject: [PATCH 1/2] Delete from archive list completed --- .../ui/ChangeOnListPickerClickEvent.java | 20 +++++++++ .../address/logic/commands/DeleteCommand.java | 44 ++++++++++++++----- src/main/java/seedu/address/model/Model.java | 9 ++++ .../seedu/address/model/ModelManager.java | 24 ++++++++++ .../java/seedu/address/ui/ListPicker.java | 3 ++ 5 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java diff --git a/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java b/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java new file mode 100644 index 000000000000..1aff3707ec56 --- /dev/null +++ b/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java @@ -0,0 +1,20 @@ +package seedu.address.commons.events.ui; + +import seedu.address.commons.events.BaseEvent; + +public class ChangeOnListPickerClickEvent extends BaseEvent { + private final int newSelection; + + public ChangeOnListPickerClickEvent (int newSelection) { + this.newSelection = newSelection; + } + + @Override + public String toString() { + return getClass().getSimpleName(); + } + + public int getNewSelection() { + return newSelection; + } +} diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/address/logic/commands/DeleteCommand.java index 532f492cae00..c3cecd97666f 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteCommand.java @@ -37,21 +37,43 @@ public DeleteCommand(Index targetIndex) { @Override public CommandResult runBody(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); + int state = model.getState(); - if (targetIndex.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } + if (state == 1) { + List lastShownList = model.getFilteredPersonList(); - Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); + if (targetIndex.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } - if (personToDelete.equals(model.getLoggedInUser().getPerson())) { - throw new CommandException(MESSAGE_DELETE_SELF_FAILURE); - } + Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); + + if (personToDelete.equals(model.getLoggedInUser().getPerson())) { + throw new CommandException(MESSAGE_DELETE_SELF_FAILURE); + } + + model.deletePerson(personToDelete); + model.commitAddressBook(); + return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); + } else if (state == 2) { + List lastShownList = model.getArchivedPersonList(); - model.deletePerson(personToDelete); - model.commitAddressBook(); - return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); + if (targetIndex.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); + + if (personToDelete.equals(model.getLoggedInUser().getPerson())) { + throw new CommandException(MESSAGE_DELETE_SELF_FAILURE); + } + + model.deleteFromArchive(personToDelete); + model.commitAddressBook(); + return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); + } else { + return null; + } } @Override diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 782dc208b1d7..cdd961b1f033 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -26,6 +26,9 @@ public interface Model { /** Clears existing backing model and replaces with the provided new data. */ void resetArchive(ReadOnlyArchiveList newData); + /** Returns the current state of the person panel list */ + int getState(); + /** Returns the AddressBook */ ReadOnlyAddressBook getAddressBook(); @@ -46,6 +49,12 @@ public interface Model { */ void deletePerson(Person target); + /** + * Deletes the given person in the archive list. + * The person must exist in the archive list. + */ + void deleteFromArchive(Person target); + /** * Restores the given person in the archive list. * The person must exist in the archive list. diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 7fb31ac57821..536a56a6219e 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -7,6 +7,8 @@ import java.util.function.Predicate; import java.util.logging.Logger; +import com.google.common.eventbus.Subscribe; + import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.collections.transformation.FilteredList; @@ -15,6 +17,7 @@ import seedu.address.commons.events.model.AddressBookChangedEvent; import seedu.address.commons.events.model.ArchivedListChangedEvent; import seedu.address.commons.events.model.AssignmentListChangedEvent; +import seedu.address.commons.events.ui.ChangeOnListPickerClickEvent; import seedu.address.commons.exceptions.IllegalUsernameException; import seedu.address.model.leaveapplication.LeaveApplicationWithEmployee; import seedu.address.model.person.Person; @@ -28,6 +31,8 @@ public class ModelManager extends ComponentManager implements Model { private static final Logger logger = LogsCenter.getLogger(ModelManager.class); + //1 is for active list, 2 is for archive list + private int state; private final VersionedAddressBook versionedAddressBook; private final VersionedAssignmentList versionedAssignmentList; private final VersionedArchiveList versionedArchiveList; @@ -55,6 +60,7 @@ public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyAssignmentList assi versionedArchiveList = new VersionedArchiveList(archiveList); filteredLeaveApplications = new FilteredList<>(versionedAddressBook.getLeaveApplicationList()); archivedPersons = new FilteredList<>(versionedArchiveList.getPersonList()); + state = 1; } public ModelManager() { @@ -77,6 +83,11 @@ public void resetArchive(ReadOnlyArchiveList newData) { indicateArchivedListChanged(); } + @Override + public int getState() { + return this.state; + } + @Override public ReadOnlyAddressBook getAddressBook() { return versionedAddressBook; @@ -116,6 +127,12 @@ public void deletePerson(Person target) { indicateArchivedListChanged(); } + @Override + public void deleteFromArchive(Person target) { + versionedArchiveList.removePerson(target); + indicateArchivedListChanged(); + } + @Override public void restorePerson(Person target) { versionedArchiveList.removePerson(target); @@ -191,12 +208,14 @@ public ObservableList getArchivedPersonList() { public void updateFilteredPersonList(Predicate predicate) { requireNonNull(predicate); filteredPersons.setPredicate(predicate); + state = 1; } @Override public void updateArchivedPersonList(Predicate predicate) { requireNonNull(predicate); archivedPersons.setPredicate(predicate); + state = 2; } //=========== Filtered Leave Application List Accessors ============================================================ @@ -250,6 +269,7 @@ public void redoAddressBook() { @Override public void commitAddressBook() { versionedAddressBook.commit(); + versionedArchiveList.commit(); } @Override @@ -330,4 +350,8 @@ public void updateFilteredAssignmentList(Predicate predicate) { filteredAssignments.setPredicate(predicate); } + @Subscribe + private void handleShowHelpEvent(ChangeOnListPickerClickEvent event) { + state = event.getNewSelection(); + } } diff --git a/src/main/java/seedu/address/ui/ListPicker.java b/src/main/java/seedu/address/ui/ListPicker.java index b5854504d946..f9e3ed8d4292 100644 --- a/src/main/java/seedu/address/ui/ListPicker.java +++ b/src/main/java/seedu/address/ui/ListPicker.java @@ -8,6 +8,7 @@ import javafx.scene.control.Button; import javafx.scene.layout.Region; import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.events.ui.ChangeOnListPickerClickEvent; import seedu.address.commons.events.ui.ListPickerSelectionChangedEvent; /** @@ -39,6 +40,7 @@ public void handle(ActionEvent e) { assignmentList.setStyle("-fx-background-color: #95A5A6; -fx-border-color: #95A5A6;"); assignmentList.setDisable(false); raise(new ListPickerSelectionChangedEvent(2)); + raise(new ChangeOnListPickerClickEvent(2)); } }); // Active button is selected @@ -52,6 +54,7 @@ public void handle(ActionEvent e) { assignmentList.setStyle("-fx-background-color: #95A5A6; -fx-border-color: #95A5A6;"); assignmentList.setDisable(false); raise(new ListPickerSelectionChangedEvent(1)); + raise(new ChangeOnListPickerClickEvent(1)); } }); // Assignment button is selected From abd9f1e9e15ed5d742d25dc87a5c925606629238 Mon Sep 17 00:00:00 2001 From: Laptop-Josh Jr Date: Thu, 8 Nov 2018 20:47:41 +0800 Subject: [PATCH 2/2] Fix Travis errors --- .../ui/ChangeOnListPickerClickEvent.java | 25 +++++++++++-------- .../seedu/address/model/ModelManager.java | 4 +-- .../commands/AddAssignmentCommandTest.java | 10 ++++++++ .../logic/commands/AddCommandTest.java | 10 ++++++++ 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java b/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java index 1aff3707ec56..5477a665633b 100644 --- a/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java +++ b/src/main/java/seedu/address/commons/events/ui/ChangeOnListPickerClickEvent.java @@ -2,19 +2,22 @@ import seedu.address.commons.events.BaseEvent; +/** + * Represents a selection change in the Person List Panel and indicates white state is it currently on + */ public class ChangeOnListPickerClickEvent extends BaseEvent { - private final int newSelection; + private final int newSelection; - public ChangeOnListPickerClickEvent (int newSelection) { - this.newSelection = newSelection; - } + public ChangeOnListPickerClickEvent (int newSelection) { + this.newSelection = newSelection; + } - @Override - public String toString() { - return getClass().getSimpleName(); - } + @Override + public String toString() { + return getClass().getSimpleName(); + } - public int getNewSelection() { - return newSelection; - } + public int getNewSelection() { + return newSelection; + } } diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index be24dbe85d73..f8a99ec6c3bc 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -349,7 +349,7 @@ public void updateFilteredAssignmentList(Predicate predicate) { requireNonNull(predicate); filteredAssignments.setPredicate(predicate); } - + @Override public boolean containsAssignment(String newAssignment, Assignment ignore) { // If the set is empty @@ -365,7 +365,7 @@ public boolean containsAssignment(String newAssignment, Assignment ignore) { } return true; } - + @Subscribe private void handleShowHelpEvent(ChangeOnListPickerClickEvent event) { state = event.getNewSelection(); diff --git a/src/test/java/seedu/address/logic/commands/AddAssignmentCommandTest.java b/src/test/java/seedu/address/logic/commands/AddAssignmentCommandTest.java index dbb15934076a..d39ca658ca82 100644 --- a/src/test/java/seedu/address/logic/commands/AddAssignmentCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddAssignmentCommandTest.java @@ -100,6 +100,11 @@ public void addPerson(Person person) { throw new AssertionError("This method should not be called."); } + @Override + public int getState() { + throw new AssertionError("This method should not be called."); + } + @Override public boolean alreadyContainsUsername(String username, Person ignore) { throw new AssertionError("This method should not be called."); @@ -141,6 +146,11 @@ public void deletePerson(Person target) { throw new AssertionError("This method should not be called."); } + @Override + public void deleteFromArchive(Person target) { + throw new AssertionError("This method should not be called."); + } + @Override public void restorePerson(Person target) { throw new AssertionError("This method should not be called."); diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index f5962ddd99b2..a1f7d0a65d7f 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -118,6 +118,11 @@ public void addPerson(Person person) { throw new AssertionError("This method should not be called."); } + @Override + public int getState() { + throw new AssertionError("This method should not be called."); + } + @Override public boolean alreadyContainsUsername(String username, Person ignore) { return false; @@ -158,6 +163,11 @@ public void deletePerson(Person target) { throw new AssertionError("This method should not be called."); } + @Override + public void deleteFromArchive(Person target) { + throw new AssertionError("This method should not be called."); + } + @Override public void restorePerson(Person target) { throw new AssertionError("This method should not be called.");