From a9e8ccc552dbf1df7c6a6ba874a481233442aba0 Mon Sep 17 00:00:00 2001 From: "LISHICHENG\\User" Date: Wed, 5 Jul 2017 11:12:09 +0800 Subject: [PATCH] Add abstract boolean isMutating() to command and only save when command isMutating(). --- src/seedu/addressbook/commands/AddCommand.java | 5 +++++ src/seedu/addressbook/commands/ClearCommand.java | 5 +++++ src/seedu/addressbook/commands/Command.java | 5 +++++ 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 | 6 ++++++ src/seedu/addressbook/logic/Logic.java | 3 ++- 12 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/commands/AddCommand.java b/src/seedu/addressbook/commands/AddCommand.java index b0f202d42..9ec5642ac 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..f03cc01a7 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..1726340f2 100644 --- a/src/seedu/addressbook/commands/Command.java +++ b/src/seedu/addressbook/commands/Command.java @@ -65,4 +65,9 @@ public int getTargetIndex() { public void setTargetIndex(int targetIndex) { this.targetIndex = targetIndex; } + + /* + * Returns whether the given command will change the data. + */ + public abstract boolean isMutating(); } diff --git a/src/seedu/addressbook/commands/DeleteCommand.java b/src/seedu/addressbook/commands/DeleteCommand.java index 1dd78f85e..626947f05 100644 --- a/src/seedu/addressbook/commands/DeleteCommand.java +++ b/src/seedu/addressbook/commands/DeleteCommand.java @@ -39,4 +39,10 @@ public CommandResult execute() { } } + + @Override + public boolean isMutating() { + return false; + } + } diff --git a/src/seedu/addressbook/commands/ExitCommand.java b/src/seedu/addressbook/commands/ExitCommand.java index 0585451f1..90107d9ce 100644 --- a/src/seedu/addressbook/commands/ExitCommand.java +++ b/src/seedu/addressbook/commands/ExitCommand.java @@ -16,4 +16,9 @@ public CommandResult execute() { return new CommandResult(MESSAGE_EXIT_ACKNOWEDGEMENT); } + @Override + public boolean isMutating() { + return false; + } + } diff --git a/src/seedu/addressbook/commands/FindCommand.java b/src/seedu/addressbook/commands/FindCommand.java index c8e9a380f..95692581d 100644 --- a/src/seedu/addressbook/commands/FindCommand.java +++ b/src/seedu/addressbook/commands/FindCommand.java @@ -53,4 +53,9 @@ private 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..ac40681e6 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..b225fea14 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..8b727a281 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..d0919cfef 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..ce9f5d177 100644 --- a/src/seedu/addressbook/commands/ViewCommand.java +++ b/src/seedu/addressbook/commands/ViewCommand.java @@ -38,4 +38,10 @@ 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..a29305094 100644 --- a/src/seedu/addressbook/logic/Logic.java +++ b/src/seedu/addressbook/logic/Logic.java @@ -85,7 +85,8 @@ 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; }