Add Printable Interface
diff --git a/src/seedu/addressbook/Main.java b/src/seedu/addressbook/Main.java
index dee2fff..f58e5cf 100644
--- a/src/seedu/addressbook/Main.java
+++ b/src/seedu/addressbook/Main.java
@@ -106,7 +106,9 @@
try {
command.setData(addressBook, lastShownList);
CommandResult result = command.execute();
- storage.save(addressBook);
+ if(command.isMutating()){
+ storage.save(addressBook);
+ }
return result;
} catch (Exception e) {
ui.show(e.getMessage());
diff --git a/src/seedu/addressbook/commands/Command.java b/src/seedu/addressbook/commands/Command.java
index bfabc83..b0c202a 100644
--- a/src/seedu/addressbook/commands/Command.java
+++ b/src/seedu/addressbook/commands/Command.java
@@ -35,4 +35,8 @@
this.addressBook = addressBook;
this.relevantPersons = relevantPersons;
}
+
+ public boolean isMutating(){
+ return true;
+ }
}
diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java
index 452685a..3d69f91 100644
--- a/src/seedu/addressbook/data/person/Address.java
+++ b/src/seedu/addressbook/data/person/Address.java
@@ -51,4 +51,8 @@
return value.hashCode();
}
+ @Override
+ public String getFullPrintableString() {
+ return " Address: " + value;
+ }
}
\ No newline at end of file
diff --git a/src/seedu/addressbook/data/person/ContactDetail.java b/src/seedu/addressbook/data/person/ContactDetail.java
index 51ccbec..c442927 100644
--- a/src/seedu/addressbook/data/person/ContactDetail.java
+++ b/src/seedu/addressbook/data/person/ContactDetail.java
@@ -3,7 +3,7 @@
/**
* Represents a person's contact detail. Can be marked private for hiding self from display.
*/
-public abstract class ContactDetail {
+public abstract class ContactDetail implements Printable{
private boolean isPrivate;
@@ -19,11 +19,11 @@
return !isPrivate;
}
- public void makePrivate() {
- isPrivate = true;
+ @Override
+ public String getPrintableString(){
+ return isPrivate ? "" : getFullPrintableString();
}
- public void makeVisible() {
- isPrivate = false;
- }
+ public abstract String getFullPrintableString();
+
}
diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java
index 8926a9e..583814e 100644
--- a/src/seedu/addressbook/data/person/Email.java
+++ b/src/seedu/addressbook/data/person/Email.java
@@ -54,4 +54,8 @@
}
+ @Override
+ public String getFullPrintableString() {
+ return " Email: " + value;
+ }
}
\ No newline at end of file
diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java
index 0900a37..98b852a 100644
--- a/src/seedu/addressbook/data/person/Phone.java
+++ b/src/seedu/addressbook/data/person/Phone.java
@@ -52,4 +52,8 @@
return value.hashCode();
}
+ @Override
+ public String getFullPrintableString() {
+ return " Phone: " + value;
+ }
}
diff --git a/src/seedu/addressbook/data/person/Printable.java b/src/seedu/addressbook/data/person/Printable.java
new file mode 100644
index 0000000..96768d0
--- /dev/null
+++ b/src/seedu/addressbook/data/person/Printable.java
@@ -0,0 +1,7 @@
+package seedu.addressbook.data.person;
+
+
+public interface Printable {
+
+ public String getPrintableString();
+}
diff --git a/src/seedu/addressbook/data/person/ReadOnlyPerson.java b/src/seedu/addressbook/data/person/ReadOnlyPerson.java
index 6cea1de..8c862bc 100644
--- a/src/seedu/addressbook/data/person/ReadOnlyPerson.java
+++ b/src/seedu/addressbook/data/person/ReadOnlyPerson.java
@@ -3,6 +3,8 @@
import seedu.addressbook.data.tag.Tag;
import seedu.addressbook.data.tag.UniqueTagList;
+import java.util.StringJoiner;
+
/**
* A read-only immutable interface for a Person in the addressbook.
* Implementations should guarantee: details are present and not null, field values are validated.
@@ -67,19 +69,21 @@
default String getAsTextHidePrivate() {
final StringBuilder builder = new StringBuilder();
builder.append(getName());
- if (getPhone().isVisible()) {
- builder.append(" Phone: ").append(getPhone());
- }
- if (getEmail().isVisible()) {
- builder.append(" Email: ").append(getEmail());
- }
- if (getAddress().isVisible()) {
- builder.append(" Address: ").append(getAddress());
- }
+ builder.append(getPrintableString(getPhone(), getEmail(), getAddress()));
builder.append(" Tags: ");
for (Tag tag : getTags()) {
builder.append(tag);
}
return builder.toString();
}
+
+ default String getPrintableString(ContactDetail... printables){
+ StringBuilder builder = new StringBuilder();
+ for(ContactDetail c : printables){
+ if (c.isVisible()){
+ builder.append(c.getPrintableString());
+ }
+ }
+ return builder.toString();
+ }
}