diff --git a/src/seedu/addressbook/commands/ExitCommand.java b/src/seedu/addressbook/commands/ExitCommand.java index 2f280395c..6c802eeba 100644 --- a/src/seedu/addressbook/commands/ExitCommand.java +++ b/src/seedu/addressbook/commands/ExitCommand.java @@ -1,5 +1,9 @@ package seedu.addressbook.commands; +import java.util.Arrays; +import seedu.addressbook.data.AddressBook; +import seedu.addressbook.data.tag.Tagging; + /** * Terminates the program. */ @@ -13,7 +17,14 @@ public class ExitCommand extends Command { @Override public CommandResult execute() { - return new CommandResult(MESSAGE_EXIT_ACKNOWEDGEMENT); + + StringBuffer tagLog = new StringBuffer(); + + for(Tagging tagging: addressBook.tagLog) { + tagLog.append(tagging.toString() + "\n"); + } + + return new CommandResult(tagLog + MESSAGE_EXIT_ACKNOWEDGEMENT); } public static boolean isExit(Command command) { diff --git a/src/seedu/addressbook/data/AddressBook.java b/src/seedu/addressbook/data/AddressBook.java index a99a92f9f..07389e6f0 100644 --- a/src/seedu/addressbook/data/AddressBook.java +++ b/src/seedu/addressbook/data/AddressBook.java @@ -1,5 +1,6 @@ package seedu.addressbook.data; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -11,6 +12,7 @@ import seedu.addressbook.data.person.UniquePersonList.DuplicatePersonException; import seedu.addressbook.data.person.UniquePersonList.PersonNotFoundException; import seedu.addressbook.data.tag.Tag; +import seedu.addressbook.data.tag.Tagging; import seedu.addressbook.data.tag.UniqueTagList; /** @@ -24,6 +26,7 @@ public class AddressBook { private final UniquePersonList allPersons; private final UniqueTagList allTags; // can contain tags not attached to any person + public ArrayList tagLog; /** * Creates an empty address book. @@ -31,6 +34,7 @@ public class AddressBook { public AddressBook() { allPersons = new UniquePersonList(); allTags = new UniqueTagList(); + tagLog = new ArrayList(); } /** @@ -46,6 +50,7 @@ public AddressBook(UniquePersonList persons, UniqueTagList tags) { for (Person p : allPersons) { syncTagsWithMasterList(p); } + tagLog = new ArrayList(); } /** diff --git a/src/seedu/addressbook/data/tag/Tagging.java b/src/seedu/addressbook/data/tag/Tagging.java new file mode 100644 index 000000000..bd10a5cb1 --- /dev/null +++ b/src/seedu/addressbook/data/tag/Tagging.java @@ -0,0 +1,28 @@ +package seedu.addressbook.data.tag; + +import seedu.addressbook.data.person.Person; + +/** + * It records a transaction of a tag addition/deletion + */ +public class Tagging { + private Person person; + private Tag tag; + private boolean addition; // true means it is an addition, false means deletion + + /** + * Constructs a tagging with the given data. + * + * @param person the person whose tag was added/deleted in the last transaction + * @param tag the tag added/deleted in the last transaction + */ + public Tagging(Person person, Tag tag, boolean addition) { + this.person = person; + this.tag = tag; + this.addition = addition; + } + + public String toString() { + return (addition?"+ ":"- ") + person.getName() + " " + tag.toString(); + } +}