diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 131d71b46..4af96f136 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -6,11 +6,13 @@ * 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 = ".+"; + + public static final String LABEL = "ADDRESS: "; public final String value; private boolean isPrivate; @@ -35,6 +37,11 @@ public Address(String address, boolean isPrivate) throws IllegalValueException { public static boolean isValidAddress(String test) { return test.matches(ADDRESS_VALIDATION_REGEX); } + + @Override + public String getPrintableString() { + return LABEL + this.toString(); + } @Override public String toString() { diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java index ad623b5b8..a1832366e 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -6,12 +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\\.]+"; + + public static final String LABEL = "EMAIL: "; public final String value; private boolean isPrivate; @@ -36,6 +38,11 @@ public Email(String email, boolean isPrivate) throws IllegalValueException { public static boolean isValidEmail(String test) { return test.matches(EMAIL_VALIDATION_REGEX); } + + @Override + public String getPrintableString() { + return LABEL + this.toString(); + } @Override public String toString() { diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index d1d271414..0ad52960e 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -9,11 +9,14 @@ * 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"; public static final String NAME_VALIDATION_REGEX = "[\\p{Alpha} ]+"; + + public static final String LABEL = "NAME: "; + public final String fullName; /** @@ -35,6 +38,11 @@ public Name(String name) throws IllegalValueException { public static boolean isValidName(String test) { return test.matches(NAME_VALIDATION_REGEX); } + + @Override + public String getPrintableString() { + return LABEL + this.toString(); + } /** * Retrieves a listing of every word in the name, in order. diff --git a/src/seedu/addressbook/data/person/Person.java b/src/seedu/addressbook/data/person/Person.java index 86561474e..635a2e6ed 100644 --- a/src/seedu/addressbook/data/person/Person.java +++ b/src/seedu/addressbook/data/person/Person.java @@ -83,5 +83,22 @@ public int hashCode() { public String toString() { return getAsTextShowAll(); } + + private String addDetailToDetailsString(String details, String detail) { + return details +" "+ detail; + } + + /** + * Print out the details of the person requested. + * @param printable + * @return a concatenated version of the printable strings of each object. + */ + private String getPrintableString(Printable ... printable) { + String details = ""; + for ( Printable detail :printable) { + addDetailToDetailsString(details, detail.getPrintableString()); + } + return details; + } } diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java index 431a7a882..d874b229e 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -6,11 +6,13 @@ * 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+"; + + public static final String LABEL = "PHONE: "; public final String value; private boolean isPrivate; @@ -35,6 +37,11 @@ public Phone(String phone, boolean isPrivate) throws IllegalValueException { public static boolean isValidPhone(String test) { return test.matches(PHONE_VALIDATION_REGEX); } + + @Override + public String getPrintableString() { + return LABEL + this.toString(); + } @Override public String 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..2e7dbde20 --- /dev/null +++ b/src/seedu/addressbook/data/person/Printable.java @@ -0,0 +1,16 @@ +package seedu.addressbook.data.person; + +/** + * A read-only immutable interface for a Person Details in the addressbook. + * Implementations should guarantee: details are present and not null, field values are validated. + * + */ +public interface Printable { + + // Label stating what detail is this detail (e.g. Phone: ) + public static String LABEL = ""; + + // Returns the detail with the labelS + String getPrintableString(); + +} diff --git a/src/seedu/addressbook/ui/TextUi.java b/src/seedu/addressbook/ui/TextUi.java index d30371c70..da7fba119 100644 --- a/src/seedu/addressbook/ui/TextUi.java +++ b/src/seedu/addressbook/ui/TextUi.java @@ -14,6 +14,7 @@ import java.util.Scanner; import seedu.addressbook.commands.CommandResult; +import seedu.addressbook.data.person.Printable; import seedu.addressbook.data.person.ReadOnlyPerson; /** @@ -168,5 +169,4 @@ private static String getIndexedListForViewing(List listItems) { private static String getIndexedListItem(int visibleIndex, String listItem) { return String.format(MESSAGE_INDEXED_LIST_ITEM, visibleIndex, listItem); } - }