diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java index 8ac726444..bc5d11ed3 100644 --- a/src/seedu/addressbook/data/person/Address.java +++ b/src/seedu/addressbook/data/person/Address.java @@ -6,15 +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 extends Contact { 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 final String value; - private boolean isPrivate; - /** * Validates given address. * @@ -35,24 +32,4 @@ public static boolean isValidAddress(String test) { return test.matches(ADDRESS_VALIDATION_REGEX); } - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof Address // instanceof handles nulls - && this.value.equals(((Address) other).value)); // state check - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - public boolean isPrivate() { - return isPrivate; - } } \ No newline at end of file diff --git a/src/seedu/addressbook/data/person/Contact.java b/src/seedu/addressbook/data/person/Contact.java new file mode 100644 index 000000000..b4247de44 --- /dev/null +++ b/src/seedu/addressbook/data/person/Contact.java @@ -0,0 +1,33 @@ +package seedu.addressbook.data.person; + +import seedu.addressbook.data.exception.IllegalValueException; + +public class Contact { + + public static String EXAMPLE; + + public String value; + protected boolean isPrivate; + + @Override + public String toString() { + return value; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Contact // instanceof handles nulls + && this.value.equals(((Contact) other).value)); // state check + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + public boolean isPrivate() { + return isPrivate; + } + +} diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java index c946f1eb3..a81a2bfeb 100644 --- a/src/seedu/addressbook/data/person/Email.java +++ b/src/seedu/addressbook/data/person/Email.java @@ -6,16 +6,13 @@ * 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 extends Contact { 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 final String value; - private boolean isPrivate; - /** * Validates given email. * @@ -37,25 +34,4 @@ public static boolean isValidEmail(String test) { return test.matches(EMAIL_VALIDATION_REGEX); } - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof Email // instanceof handles nulls - && this.value.equals(((Email) other).value)); // state check - } - - @Override - public int hashCode() { - return value.hashCode(); - } - - - public boolean isPrivate() { - return isPrivate; - } } \ 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 b5a556de4..a9a2f0793 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -6,15 +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 extends Contact { 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 final String value; - private boolean isPrivate; - /** * Validates given phone number. * @@ -36,24 +33,9 @@ public static boolean isValidPhone(String test) { return test.matches(PHONE_VALIDATION_REGEX); } - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof Phone // instanceof handles nulls - && this.value.equals(((Phone) other).value)); // state check - } - @Override public int hashCode() { return value.hashCode(); } - public boolean isPrivate() { - return isPrivate; - } }