diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index 2f5ee42335b..b8e48393986 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -1,11 +1,14 @@ package seedu.address.storage; +import java.util.Optional; + import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.model.person.Address; import seedu.address.model.person.DateOfBirth; +import seedu.address.model.person.Email; import seedu.address.model.person.Name; import seedu.address.model.person.Nric; import seedu.address.model.person.Person; @@ -26,6 +29,7 @@ class JsonAdaptedPerson { private final String status; private final String address; private final String dateOfBirth; + private final Optional email; /** * Constructs a {@code JsonAdaptedPerson} with the given person details. @@ -34,7 +38,7 @@ class JsonAdaptedPerson { public JsonAdaptedPerson(@JsonProperty("nric") String nric, @JsonProperty("name") String name, @JsonProperty("phone") String phone, @JsonProperty("dateOfBirth") String dob, @JsonProperty("sex") String sex, @JsonProperty("address") String address, - @JsonProperty("status") String status) { + @JsonProperty("status") String status, @JsonProperty("email") String email) { this.nric = nric; this.name = name; this.phone = phone; @@ -42,6 +46,7 @@ public JsonAdaptedPerson(@JsonProperty("nric") String nric, @JsonProperty("name" this.dateOfBirth = dob; this.sex = sex; this.status = status; + this.email = Optional.ofNullable(email); } /** @@ -55,7 +60,7 @@ public JsonAdaptedPerson(Person source) { this.dateOfBirth = source.getDateOfBirth().toString(); this.sex = source.getEmail().toString(); this.status = source.getStatus().toString(); - + this.email = Optional.ofNullable(source.getEmail().toString()); } /** @@ -64,6 +69,9 @@ public JsonAdaptedPerson(Person source) { * @throws IllegalValueException if there were any data constraints violated in the adapted person. */ public Person toModelType() throws IllegalValueException { + + Person person; + // NRIC Check if (nric == null) { throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName())); @@ -121,7 +129,15 @@ public Person toModelType() throws IllegalValueException { throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS); } final Status modelStatus = new Status(status); - return new Person(modelNric, modelName, modelPhone, modelAddress, modelDateOfBirth, modelSex, modelStatus); + + person = new Person(modelNric, modelName, modelPhone, modelAddress, modelDateOfBirth, modelSex, modelStatus); + + // Email check + if (email.isPresent()) { + final Email modelEmail = new Email(email.get()); + person.setEmail(modelEmail); + } + return person; } } diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 2c8eff3d8f3..3bee347b0a0 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -8,13 +8,7 @@ import org.junit.jupiter.api.Test; import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.person.Address; -import seedu.address.model.person.DateOfBirth; -import seedu.address.model.person.Name; -import seedu.address.model.person.Nric; -import seedu.address.model.person.Phone; -import seedu.address.model.person.Sex; -import seedu.address.model.person.Status; +import seedu.address.model.person.*; public class JsonAdaptedPersonTest { @@ -33,6 +27,7 @@ public class JsonAdaptedPersonTest { private static final String VALID_DOB = "2022-01-01"; private static final String VALID_SEX = BENSON.getSex().toString(); private static final String VALID_STATUS = BENSON.getStatus().toString(); + private static final String VALID_EMAIL = "benson123@gmail.com"; @Test public void toModelType_validPersonDetails_returnsPerson() throws Exception { JsonAdaptedPerson person = new JsonAdaptedPerson(BENSON); @@ -43,7 +38,7 @@ public void toModelType_validPersonDetails_returnsPerson() throws Exception { public void toModelType_invalidNric_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = Nric.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -52,7 +47,7 @@ public void toModelType_invalidNric_throwsIllegalValueException() { public void toModelType_nullNric_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -60,7 +55,7 @@ public void toModelType_nullNric_throwsIllegalValueException() { public void toModelType_invalidName_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = Name.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -69,7 +64,7 @@ public void toModelType_invalidName_throwsIllegalValueException() { public void toModelType_nullName_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -78,7 +73,7 @@ public void toModelType_nullName_throwsIllegalValueException() { public void toModelType_invalidPhone_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = Phone.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -87,7 +82,7 @@ public void toModelType_invalidPhone_throwsIllegalValueException() { public void toModelType_nullPhone_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null, - VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -96,7 +91,7 @@ public void toModelType_nullPhone_throwsIllegalValueException() { public void toModelType_invalidAddress_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - INVALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS); + INVALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = Address.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -105,7 +100,7 @@ public void toModelType_invalidAddress_throwsIllegalValueException() { public void toModelType_nullAddress_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - null, VALID_DOB, VALID_SEX, VALID_STATUS); + null, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -113,7 +108,7 @@ public void toModelType_nullAddress_throwsIllegalValueException() { public void toModelType_invalidDob_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, INVALID_DOB, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, INVALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = DateOfBirth.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -122,7 +117,7 @@ public void toModelType_invalidDob_throwsIllegalValueException() { public void toModelType_nullDob_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, null, VALID_SEX, VALID_STATUS); + VALID_ADDRESS, null, VALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -130,7 +125,7 @@ public void toModelType_nullDob_throwsIllegalValueException() { public void toModelType_invalidSex_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, INVALID_SEX, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, INVALID_SEX, VALID_STATUS, VALID_EMAIL); String expectedMessage = Sex.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -139,7 +134,7 @@ public void toModelType_invalidSex_throwsIllegalValueException() { public void toModelType_nullSex_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, null, VALID_STATUS); + VALID_ADDRESS, VALID_DOB, null, VALID_STATUS, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -147,7 +142,7 @@ public void toModelType_nullSex_throwsIllegalValueException() { public void toModelType_invalidStatus_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, INVALID_STATUS); + VALID_ADDRESS, VALID_DOB, VALID_SEX, INVALID_STATUS, VALID_EMAIL); String expectedMessage = Status.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -156,10 +151,9 @@ public void toModelType_invalidStatus_throwsIllegalValueException() { public void toModelType_nullStatus_throwsIllegalValueException() { JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, - VALID_ADDRESS, VALID_DOB, VALID_SEX, null); + VALID_ADDRESS, VALID_DOB, VALID_SEX, null, VALID_EMAIL); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } - } diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index cf9d75047ac..be1fddc6877 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -48,6 +48,7 @@ public PersonBuilder() { */ public PersonBuilder(Person personToCopy) { //TODO: Add the missing fields + nric = personToCopy.getNric(); name = personToCopy.getName(); phone = personToCopy.getPhone(); address = personToCopy.getAddress();