Created a Contact super class to Phone, Email, and Address
diff --git a/src/seedu/addressbook/data/person/Address.java b/src/seedu/addressbook/data/person/Address.java
index 131d71b..dd8f418 100644
--- a/src/seedu/addressbook/data/person/Address.java
+++ b/src/seedu/addressbook/data/person/Address.java
@@ -4,17 +4,17 @@
/**
* Represents a Person's address in the address book.
- * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}
+ * Guarantees: immutable; is valid as declared in {@link #isValid(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;
-
+ public boolean isValid(String test) {
+ return test.matches(ADDRESS_VALIDATION_REGEX);
+ }
/**
* Validates given address.
*
@@ -23,37 +23,16 @@
public Address(String address, boolean isPrivate) throws IllegalValueException {
String trimmedAddress = address.trim();
this.isPrivate = isPrivate;
- if (!isValidAddress(trimmedAddress)) {
+ if (!isValid(trimmedAddress)) {
throw new IllegalValueException(MESSAGE_ADDRESS_CONSTRAINTS);
}
this.value = trimmedAddress;
}
- /**
- * Returns true if a given string is a valid person address.
- */
- 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;
- }
}
diff --git a/src/seedu/addressbook/data/person/Contact.java b/src/seedu/addressbook/data/person/Contact.java
new file mode 100644
index 0000000..4e9dce4
--- /dev/null
+++ b/src/seedu/addressbook/data/person/Contact.java
@@ -0,0 +1,22 @@
+package seedu.addressbook.data.person;
+
+public abstract class Contact {
+
+ public String value;
+ public boolean isPrivate;
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ public abstract boolean isValid(String value);
+
+ public boolean isPrivate() {
+ return isPrivate;
+ }
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+}
diff --git a/src/seedu/addressbook/data/person/Email.java b/src/seedu/addressbook/data/person/Email.java
index ad623b5..6f0ca8a 100644
--- a/src/seedu/addressbook/data/person/Email.java
+++ b/src/seedu/addressbook/data/person/Email.java
@@ -4,17 +4,18 @@
/**
* Represents a Person's email in the address book.
- * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}
+ * Guarantees: immutable; is valid as declared in {@link #isValid(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;
+ public boolean isValid(String test) {
+ return test.matches(EMAIL_VALIDATION_REGEX);
+ }
/**
* Validates given email.
@@ -24,7 +25,7 @@
public Email(String email, boolean isPrivate) throws IllegalValueException {
this.isPrivate = isPrivate;
String trimmedEmail = email.trim();
- if (!isValidEmail(trimmedEmail)) {
+ if (!isValid(trimmedEmail)) {
throw new IllegalValueException(MESSAGE_EMAIL_CONSTRAINTS);
}
this.value = trimmedEmail;
@@ -33,14 +34,6 @@
/**
* Returns true if the given string is a valid person email.
*/
- public static boolean isValidEmail(String test) {
- return test.matches(EMAIL_VALIDATION_REGEX);
- }
-
- @Override
- public String toString() {
- return value;
- }
@Override
public boolean equals(Object other) {
@@ -48,14 +41,4 @@
|| (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;
- }
}
diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java
index 431a7a8..2753214 100644
--- a/src/seedu/addressbook/data/person/Phone.java
+++ b/src/seedu/addressbook/data/person/Phone.java
@@ -4,16 +4,18 @@
/**
* Represents a Person's phone number in the address book.
- * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}
+ * Guarantees: immutable; is valid as declared in {@link #isValid(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;
+
+ public boolean isValid(String test) {
+ return test.matches(PHONE_VALIDATION_REGEX);
+ }
/**
* Validates given phone number.
@@ -23,37 +25,16 @@
public Phone(String phone, boolean isPrivate) throws IllegalValueException {
this.isPrivate = isPrivate;
String trimmedPhone = phone.trim();
- if (!isValidPhone(trimmedPhone)) {
+ if (!isValid(trimmedPhone)) {
throw new IllegalValueException(MESSAGE_PHONE_CONSTRAINTS);
}
this.value = trimmedPhone;
}
- /**
- * Returns true if the given string is a valid person phone number.
- */
- 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;
- }
}