From 20aef54e0968c98ef2dc6b817db61a7a8f51b36f Mon Sep 17 00:00:00 2001 From: sq <19shuqi@gmail.com> Date: Wed, 5 Jul 2017 00:37:52 +0800 Subject: [PATCH 1/2] add polymorphic isMutating() --- src/seedu/addressbook/commands/AddCommand.java | 5 +++++ src/seedu/addressbook/commands/ClearCommand.java | 5 +++++ src/seedu/addressbook/commands/Command.java | 2 ++ src/seedu/addressbook/commands/DeleteCommand.java | 6 ++++++ src/seedu/addressbook/commands/ExitCommand.java | 5 +++++ src/seedu/addressbook/commands/FindCommand.java | 5 +++++ src/seedu/addressbook/commands/HelpCommand.java | 5 +++++ src/seedu/addressbook/commands/IncorrectCommand.java | 5 +++++ src/seedu/addressbook/commands/ListCommand.java | 6 ++++++ src/seedu/addressbook/commands/ViewAllCommand.java | 6 ++++++ src/seedu/addressbook/commands/ViewCommand.java | 7 +++++++ src/seedu/addressbook/logic/Logic.java | 4 +++- 12 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/commands/AddCommand.java b/src/seedu/addressbook/commands/AddCommand.java index b0f202d42..575db3fbe 100644 --- a/src/seedu/addressbook/commands/AddCommand.java +++ b/src/seedu/addressbook/commands/AddCommand.java @@ -67,4 +67,9 @@ public CommandResult execute() { } } + @Override + public boolean isMutating() { + return true; + } + } diff --git a/src/seedu/addressbook/commands/ClearCommand.java b/src/seedu/addressbook/commands/ClearCommand.java index 330146aaa..877c0ed2e 100644 --- a/src/seedu/addressbook/commands/ClearCommand.java +++ b/src/seedu/addressbook/commands/ClearCommand.java @@ -16,4 +16,9 @@ public CommandResult execute() { addressBook.clear(); return new CommandResult(MESSAGE_SUCCESS); } + + @Override + public boolean isMutating() { + return true; + } } diff --git a/src/seedu/addressbook/commands/Command.java b/src/seedu/addressbook/commands/Command.java index ccd4fcbf4..ded80039a 100644 --- a/src/seedu/addressbook/commands/Command.java +++ b/src/seedu/addressbook/commands/Command.java @@ -40,6 +40,8 @@ public static String getMessageForPersonListShownSummary(List getPersonsWithNameContainingAnyKeyword(Set return matchedPersons; } + @Override + public boolean isMutating() { + return false; + } + } diff --git a/src/seedu/addressbook/commands/HelpCommand.java b/src/seedu/addressbook/commands/HelpCommand.java index ef2ed7d0e..0c5aa535b 100644 --- a/src/seedu/addressbook/commands/HelpCommand.java +++ b/src/seedu/addressbook/commands/HelpCommand.java @@ -25,4 +25,9 @@ public class HelpCommand extends Command { public CommandResult execute() { return new CommandResult(MESSAGE_ALL_USAGES); } + + @Override + public boolean isMutating() { + return false; + } } diff --git a/src/seedu/addressbook/commands/IncorrectCommand.java b/src/seedu/addressbook/commands/IncorrectCommand.java index 81abba7a1..69324f491 100644 --- a/src/seedu/addressbook/commands/IncorrectCommand.java +++ b/src/seedu/addressbook/commands/IncorrectCommand.java @@ -17,4 +17,9 @@ public CommandResult execute() { return new CommandResult(feedbackToUser); } + @Override + public boolean isMutating() { + return false; + } + } diff --git a/src/seedu/addressbook/commands/ListCommand.java b/src/seedu/addressbook/commands/ListCommand.java index cb604a8e9..b6ffacb9c 100644 --- a/src/seedu/addressbook/commands/ListCommand.java +++ b/src/seedu/addressbook/commands/ListCommand.java @@ -22,4 +22,10 @@ public CommandResult execute() { List allPersons = addressBook.getAllPersons().immutableListView(); return new CommandResult(getMessageForPersonListShownSummary(allPersons), allPersons); } + + + @Override + public boolean isMutating() { + return false; + } } diff --git a/src/seedu/addressbook/commands/ViewAllCommand.java b/src/seedu/addressbook/commands/ViewAllCommand.java index ed2c16e83..3e75e7944 100644 --- a/src/seedu/addressbook/commands/ViewAllCommand.java +++ b/src/seedu/addressbook/commands/ViewAllCommand.java @@ -37,4 +37,10 @@ public CommandResult execute() { return new CommandResult(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); } } + + + @Override + public boolean isMutating() { + return false; + } } diff --git a/src/seedu/addressbook/commands/ViewCommand.java b/src/seedu/addressbook/commands/ViewCommand.java index 1058c4b52..c8e6ff96e 100644 --- a/src/seedu/addressbook/commands/ViewCommand.java +++ b/src/seedu/addressbook/commands/ViewCommand.java @@ -38,4 +38,11 @@ public CommandResult execute() { } } + + @Override + public boolean isMutating() { + return false; + } + + } diff --git a/src/seedu/addressbook/logic/Logic.java b/src/seedu/addressbook/logic/Logic.java index 17afd61a0..fe2bd529d 100644 --- a/src/seedu/addressbook/logic/Logic.java +++ b/src/seedu/addressbook/logic/Logic.java @@ -85,7 +85,9 @@ public CommandResult execute(String userCommandText) throws Exception { private CommandResult execute(Command command) throws Exception { command.setData(addressBook, lastShownList); CommandResult result = command.execute(); - storage.save(addressBook); + if (command.isMutating()) { + storage.save(addressBook); + } return result; } From 9b7686051ac18aaeeb25761488df1eee3aef3cd9 Mon Sep 17 00:00:00 2001 From: sq <19shuqi@gmail.com> Date: Wed, 5 Jul 2017 15:22:25 +0800 Subject: [PATCH 2/2] Follow LSP --- src/seedu/addressbook/commands/AddCommand.java | 3 ++- src/seedu/addressbook/commands/Command.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/seedu/addressbook/commands/AddCommand.java b/src/seedu/addressbook/commands/AddCommand.java index 575db3fbe..6344a7d04 100644 --- a/src/seedu/addressbook/commands/AddCommand.java +++ b/src/seedu/addressbook/commands/AddCommand.java @@ -2,6 +2,7 @@ import seedu.addressbook.data.exception.IllegalValueException; import seedu.addressbook.data.person.*; +import seedu.addressbook.data.person.UniquePersonList.DuplicatePersonException; import seedu.addressbook.data.tag.Tag; import seedu.addressbook.data.tag.UniqueTagList; @@ -58,7 +59,7 @@ public ReadOnlyPerson getPerson() { } @Override - public CommandResult execute() { + public CommandResult execute() throws DuplicatePersonException{ try { addressBook.addPerson(toAdd); return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); diff --git a/src/seedu/addressbook/commands/Command.java b/src/seedu/addressbook/commands/Command.java index ded80039a..d30274c19 100644 --- a/src/seedu/addressbook/commands/Command.java +++ b/src/seedu/addressbook/commands/Command.java @@ -3,6 +3,7 @@ import seedu.addressbook.common.Messages; import seedu.addressbook.data.AddressBook; import seedu.addressbook.data.person.ReadOnlyPerson; +import seedu.addressbook.data.person.UniquePersonList.DuplicatePersonException; import java.util.List; @@ -38,8 +39,9 @@ public static String getMessageForPersonListShownSummary(List