diff --git a/src/seedu/addressbook/data/AddressBook.java b/src/seedu/addressbook/data/AddressBook.java index a99a92f9f..e97ade850 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; @@ -24,6 +25,7 @@ public class AddressBook { private final UniquePersonList allPersons; private final UniqueTagList allTags; // can contain tags not attached to any person + private final ArrayList allTaggings; /** * Creates an empty address book. @@ -31,6 +33,7 @@ public class AddressBook { public AddressBook() { allPersons = new UniquePersonList(); allTags = new UniqueTagList(); + allTaggings= new ArrayList<>(); } /** @@ -46,6 +49,7 @@ public AddressBook(UniquePersonList persons, UniqueTagList tags) { for (Person p : allPersons) { syncTagsWithMasterList(p); } + allTaggings = new ArrayList<>(); } /** @@ -121,6 +125,18 @@ public UniqueTagList getAllTags() { return new UniqueTagList(allTags); } + /** + * Returns message containing all Tagging messages in current session of AddressBook. + */ + public String getAllTaggings() { + StringBuilder builder = new StringBuilder(); + for(Tagging t: allTaggings) { + builder.append(t.getTaggingMessage()); + builder.append("\n"); + } + return builder.toString().trim(); + } + @Override public boolean equals(Object other) { return other == this // short circuit if same object diff --git a/src/seedu/addressbook/data/Tagging.java b/src/seedu/addressbook/data/Tagging.java new file mode 100644 index 000000000..ab9b3a015 --- /dev/null +++ b/src/seedu/addressbook/data/Tagging.java @@ -0,0 +1,42 @@ +package seedu.addressbook.data; + +import seedu.addressbook.data.exception.IllegalValueException; +import seedu.addressbook.data.person.Person; +import seedu.addressbook.data.tag.Tag; + +/** + * Represents the adding or deleting a Tag to a Person. + */ +public class Tagging { + private static final String DELETE_SYMBOL = "-"; + private static final String ADD_SYMBOL = "+"; + private static final String MESSAGE_CONSTRAINTS = "Action Executed message can only be \"delete\" or \"add\"."; + private static final String DELETE_ACTION = "delete"; + private static final String ADD_ACTION = "add"; + + + public final Person person; + public final Tag tag; + public final String actionTaken; + + public Tagging (Person person, Tag tag, String actionExecuted) throws IllegalValueException { + this.person = person; + this.tag = tag; + if (actionExecuted.equals(DELETE_ACTION)) { + actionTaken = DELETE_SYMBOL; + } + else if (actionExecuted.equals(ADD_ACTION)) { + actionTaken = ADD_SYMBOL; + } + else { + throw new IllegalValueException(MESSAGE_CONSTRAINTS); + } + } + + /** + * Returns Tagging message. + */ + public String getTaggingMessage () { + return actionTaken + " " + person.getName().toString() + " " + tag.toString(); + } +}