From b5b720a08d0e9b0c1a2b464c2788db8871795957 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 08:40:41 +0800 Subject: [PATCH 1/7] Add Printable Interface --- src/seedu/addressbook/data/person/Printable.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/seedu/addressbook/data/person/Printable.java diff --git a/src/seedu/addressbook/data/person/Printable.java b/src/seedu/addressbook/data/person/Printable.java new file mode 100644 index 000000000..43e93d373 --- /dev/null +++ b/src/seedu/addressbook/data/person/Printable.java @@ -0,0 +1,5 @@ +package seedu.addressbook.data.person; + +public interface Printable { + +} From 5075fcae229016f5a6e1c10f76119daef836dde8 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 08:45:51 +0800 Subject: [PATCH 2/7] Add header comments --- src/seedu/addressbook/data/person/Printable.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/data/person/Printable.java b/src/seedu/addressbook/data/person/Printable.java index 43e93d373..eb7a9b8de 100644 --- a/src/seedu/addressbook/data/person/Printable.java +++ b/src/seedu/addressbook/data/person/Printable.java @@ -1,5 +1,7 @@ package seedu.addressbook.data.person; - +/** + * A read-only immutable interface for printables in the addressbook. + */ public interface Printable { } From 67955a043891f3d7c6b2927f85c6e12d570d17e9 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 08:46:51 +0800 Subject: [PATCH 3/7] Add getPrintableString method --- src/seedu/addressbook/data/person/Printable.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/data/person/Printable.java b/src/seedu/addressbook/data/person/Printable.java index eb7a9b8de..91cbeece6 100644 --- a/src/seedu/addressbook/data/person/Printable.java +++ b/src/seedu/addressbook/data/person/Printable.java @@ -3,5 +3,8 @@ * A read-only immutable interface for printables in the addressbook. */ public interface Printable { - + String toString(); + default String getPrintableString(){ + return this.toString(); + } } From 73ba24152c4f52ee6fd6485795643218b66d9dc3 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 08:48:26 +0800 Subject: [PATCH 4/7] Implements Printable interface in four classes --- src/seedu/addressbook/data/person/Address.java | 2 +- src/seedu/addressbook/data/person/Email.java | 2 +- src/seedu/addressbook/data/person/Name.java | 2 +- src/seedu/addressbook/data/person/Phone.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 25e462ad6..61ba48cd8 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -6,7 +6,7 @@ * 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"; diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java index e242e6d36..f36418c78 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -6,7 +6,7 @@ * 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 = diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index a57385407..70ea8cddd 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"; diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java index 942ab6619..849e66470 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -6,7 +6,7 @@ * 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"; From 8585c544fd5dffc0385aa6fb91661e448c03a6ab Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 08:51:38 +0800 Subject: [PATCH 5/7] Overwrite getPrintableString() method in four classes --- src/seedu/addressbook/data/person/Address.java | 7 +++++++ src/seedu/addressbook/data/person/Email.java | 5 +++++ src/seedu/addressbook/data/person/Name.java | 5 +++++ src/seedu/addressbook/data/person/Phone.java | 5 +++++ 4 files changed, 22 insertions(+) diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 61ba48cd8..4253d1b87 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -56,4 +56,11 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } + + @Override + public String getPrintableString() { + return "Address: "+this.toString(); + } + + } diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java index f36418c78..e2a79d4b2 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -58,4 +58,9 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } + + @Override + public String getPrintableString() { + return "Email: "+this.toString(); + } } diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 70ea8cddd..adc00e96d 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -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 849e66470..2537f42d3 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -56,4 +56,9 @@ public int hashCode() { public boolean isPrivate() { return isPrivate; } + + @Override + public String getPrintableString() { + return "Phone: "+this.toString(); + } } From 3b7da08ff1f6d1109dfa581cc8681f448930ac85 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 09:05:52 +0800 Subject: [PATCH 6/7] Add getPrintableString method in ParserTest class --- test/java/seedu/addressbook/parser/ParserTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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; + } } From 60a0e6cd0d35ebba8d035b2b82e4ab2291d58f54 Mon Sep 17 00:00:00 2001 From: Chengcheng Date: Wed, 22 Feb 2017 09:15:00 +0800 Subject: [PATCH 7/7] Prevent printing of private printable --- src/seedu/addressbook/data/person/Address.java | 12 ++++++++---- src/seedu/addressbook/data/person/Email.java | 10 ++++++++-- src/seedu/addressbook/data/person/Phone.java | 8 +++++++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 4253d1b87..86060925e 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -11,6 +11,7 @@ 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; @@ -59,8 +60,11 @@ public boolean isPrivate() { @Override public String getPrintableString() { - return "Address: "+this.toString(); + 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 e2a79d4b2..d1ed0fc32 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -12,7 +12,8 @@ public class Email implements Printable { 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; @@ -61,6 +62,11 @@ public boolean isPrivate() { @Override public String getPrintableString() { - return "Email: "+this.toString(); + if(this.isPrivate()){ + return "Email: " + EMAIL_PRIVATE_STRING; + } + else { + return "Email: "+ this.toString(); + } } } diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java index 2537f42d3..e907f4eb1 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -11,6 +11,7 @@ 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; @@ -59,6 +60,11 @@ public boolean isPrivate() { @Override public String getPrintableString() { - return "Phone: "+this.toString(); + if(this.isPrivate()){ + return "Phone: " + PHONE_PRIVATE_STRING; + } + else { + return "Phone: "+ this.toString(); + } } }