diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 25e462ad6..86060925e 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -6,11 +6,12 @@ * Represents a Person's address in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} */ -public class Address { +public class Address implements Printable{ public static final String EXAMPLE = "123, some street"; public static final String MESSAGE_ADDRESS_CONSTRAINTS = "Person addresses can be in any format"; public static final String ADDRESS_VALIDATION_REGEX = ".+"; + private static final String ADDRESS_PRIVATE_STRING = "***"; public final String value; private boolean isPrivate; @@ -56,4 +57,14 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } -} + + @Override + public String getPrintableString() { + if(this.isPrivate()){ + return "Address: " + ADDRESS_PRIVATE_STRING; + } + else { + return "Address: "+ this.toString(); + } + } +} \ No newline at end of file diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java index e242e6d36..d1ed0fc32 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -6,13 +6,14 @@ * Represents a Person's email in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} */ -public class Email { +public class Email implements Printable { public static final String EXAMPLE = "valid@e.mail"; public static final String MESSAGE_EMAIL_CONSTRAINTS = "Person emails should be 2 alphanumeric/period strings separated by '@'"; public static final String EMAIL_VALIDATION_REGEX = "[\\w\\.]+@[\\w\\.]+"; - + private static final String EMAIL_PRIVATE_STRING = "***"; + public final String value; private boolean isPrivate; @@ -58,4 +59,14 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } + + @Override + public String getPrintableString() { + if(this.isPrivate()){ + return "Email: " + EMAIL_PRIVATE_STRING; + } + else { + return "Email: "+ this.toString(); + } + } } diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index a57385407..adc00e96d 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -9,7 +9,7 @@ * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} */ -public class Name { +public class Name implements Printable { public static final String EXAMPLE = "John Doe"; public static final String MESSAGE_NAME_CONSTRAINTS = "Person names should be spaces or alphabetic characters"; @@ -59,5 +59,10 @@ public boolean equals(Object other) { public int hashCode() { return fullName.hashCode(); } + + @Override + public String getPrintableString() { + return "Name: "+this.toString(); + } } diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java index 942ab6619..e907f4eb1 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -6,11 +6,12 @@ * Represents a Person's phone number in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} */ -public class Phone { +public class Phone implements Printable { public static final String EXAMPLE = "123456789"; public static final String MESSAGE_PHONE_CONSTRAINTS = "Person phone numbers should only contain numbers"; public static final String PHONE_VALIDATION_REGEX = "\\d+"; + private static final String PHONE_PRIVATE_STRING = "***"; public final String value; private boolean isPrivate; @@ -56,4 +57,14 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } + + @Override + public String getPrintableString() { + if(this.isPrivate()){ + return "Phone: " + PHONE_PRIVATE_STRING; + } + else { + return "Phone: "+ this.toString(); + } + } } diff --git a/src/seedu/addressbook/data/person/Printable.java b/src/seedu/addressbook/data/person/Printable.java new file mode 100644 index 000000000..91cbeece6 --- /dev/null +++ b/src/seedu/addressbook/data/person/Printable.java @@ -0,0 +1,10 @@ +package seedu.addressbook.data.person; +/** + * A read-only immutable interface for printables in the addressbook. + */ +public interface Printable { + String toString(); + default String getPrintableString(){ + return this.toString(); + } +} diff --git a/test/java/seedu/addressbook/parser/ParserTest.java b/test/java/seedu/addressbook/parser/ParserTest.java index ddf7443ec..b075047b5 100644 --- a/test/java/seedu/addressbook/parser/ParserTest.java +++ b/test/java/seedu/addressbook/parser/ParserTest.java @@ -16,6 +16,7 @@ import static seedu.addressbook.common.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.addressbook.common.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; + public class ParserTest { private Parser parser; @@ -304,4 +305,16 @@ private T parseAndAssertCommandType(String input, Class e assertTrue(result.getClass().isAssignableFrom(expectedCommandClass)); return (T) result; } + + /** + * Returns a concatenated version of the printable strings of each object. + */ + String getPrintableString(Printable... printables){ + Set allPrintables = new HashSet(); + for(Printable p: printables){ + allPrintables.add(p.getPrintableString()); + } + String concatenatedString = String.join(", ", allPrintables); + return concatenatedString; + } }