Skip to content

Commit

Permalink
Modify Person to support a Remark field
Browse files Browse the repository at this point in the history
Add Person#getRemark()

Modify PersonBuilder to support Remark.

Modify AddCommand to create a Person with a blank Remark.

Modify EditCommand to pass Remarks on unchanged.

Modify SampleDataUtil to add remarks for the sample data.

Add withRemark() to PersonBuilder.
  • Loading branch information
j-lum committed Sep 8, 2019
1 parent 2758455 commit b241ef8
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 11 deletions.
4 changes: 3 additions & 1 deletion src/main/java/seedu/address/logic/commands/EditCommand.java
Expand Up @@ -24,6 +24,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Remark;
import seedu.address.model.tag.Tag;

/**
Expand Down Expand Up @@ -97,9 +98,10 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
Remark updatedRemark = personToEdit.getRemark(); // edit command does not allow editing remarks
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());

return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);
return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRemark, updatedTags);
}

@Override
Expand Down
Expand Up @@ -17,6 +17,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Remark;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -42,9 +43,10 @@ public AddCommand parse(String args) throws ParseException {
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
Remark remark = new Remark(""); // add command does not allow adding remarks straight away
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

Person person = new Person(name, phone, email, address, tagList);
Person person = new Person(name, phone, email, address, remark, tagList);

return new AddCommand(person);
}
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/seedu/address/model/person/Person.java
Expand Up @@ -22,17 +22,19 @@ public class Person {

// Data fields
private final Address address;
private final Remark remark;
private final Set<Tag> tags = new HashSet<>();

/**
* Every field must be present and not null.
*/
public Person(Name name, Phone phone, Email email, Address address, Set<Tag> tags) {
public Person(Name name, Phone phone, Email email, Address address, Remark remark, Set<Tag> tags) {
requireAllNonNull(name, phone, email, address, tags);
this.name = name;
this.phone = phone;
this.email = email;
this.address = address;
this.remark = remark;
this.tags.addAll(tags);
}

Expand All @@ -52,6 +54,10 @@ public Address getAddress() {
return address;
}

public Remark getRemark() {
return remark;
}

/**
* Returns an immutable tag set, which throws {@code UnsupportedOperationException}
* if modification is attempted.
Expand Down Expand Up @@ -112,6 +118,8 @@ public String toString() {
.append(getEmail())
.append(" Address: ")
.append(getAddress())
.append(" Remark: ")
.append(getRemark())
.append(" Tags: ");
getTags().forEach(builder::append);
return builder.toString();
Expand Down
16 changes: 10 additions & 6 deletions src/main/java/seedu/address/model/util/SampleDataUtil.java
Expand Up @@ -11,31 +11,35 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Remark;
import seedu.address.model.tag.Tag;

/**
* Contains utility methods for populating {@code AddressBook} with sample data.
*/
public class SampleDataUtil {

public static final Remark EMPTY_REMARK = new Remark("");

public static Person[] getSamplePersons() {
return new Person[] {
new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"),
new Address("Blk 30 Geylang Street 29, #06-40"),
new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK,
getTagSet("friends")),
new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"),
new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"),
new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), EMPTY_REMARK,
getTagSet("colleagues", "friends")),
new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"),
new Address("Blk 11 Ang Mo Kio Street 74, #11-04"),
new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), EMPTY_REMARK,
getTagSet("neighbours")),
new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"),
new Address("Blk 436 Serangoon Gardens Street 26, #16-43"),
new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), EMPTY_REMARK,
getTagSet("family")),
new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"),
new Address("Blk 47 Tampines Street 20, #17-35"),
new Address("Blk 47 Tampines Street 20, #17-35"), EMPTY_REMARK,
getTagSet("classmates")),
new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"),
new Address("Blk 45 Aljunied Street 85, #11-31"),
new Address("Blk 45 Aljunied Street 85, #11-31"), EMPTY_REMARK,
getTagSet("colleagues"))
};
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/seedu/address/storage/JsonAdaptedPerson.java
Expand Up @@ -15,6 +15,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Remark;
import seedu.address.model.tag.Tag;

/**
Expand Down Expand Up @@ -102,8 +103,10 @@ public Person toModelType() throws IllegalValueException {
}
final Address modelAddress = new Address(address);

final Remark modelRemark = new Remark(""); //TODO: Implement parsing and marshalling in the storage commit.

final Set<Tag> modelTags = new HashSet<>(personTags);
return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);
return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark, modelTags);
}

}
17 changes: 16 additions & 1 deletion src/test/java/seedu/address/testutil/PersonBuilder.java
Expand Up @@ -8,6 +8,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Remark;
import seedu.address.model.tag.Tag;
import seedu.address.model.util.SampleDataUtil;

Expand All @@ -20,18 +21,21 @@ public class PersonBuilder {
public static final String DEFAULT_PHONE = "85355255";
public static final String DEFAULT_EMAIL = "alice@gmail.com";
public static final String DEFAULT_ADDRESS = "123, Jurong West Ave 6, #08-111";
public static final String DEFAULT_REMARK = "She likes aardvarks.";

private Name name;
private Phone phone;
private Email email;
private Address address;
private Remark remark;
private Set<Tag> tags;

public PersonBuilder() {
name = new Name(DEFAULT_NAME);
phone = new Phone(DEFAULT_PHONE);
email = new Email(DEFAULT_EMAIL);
address = new Address(DEFAULT_ADDRESS);
remark = new Remark(DEFAULT_REMARK);
tags = new HashSet<>();
}

Expand All @@ -43,6 +47,7 @@ public PersonBuilder(Person personToCopy) {
phone = personToCopy.getPhone();
email = personToCopy.getEmail();
address = personToCopy.getAddress();
remark = personToCopy.getRemark();
tags = new HashSet<>(personToCopy.getTags());
}

Expand Down Expand Up @@ -86,8 +91,18 @@ public PersonBuilder withEmail(String email) {
return this;
}

/**
* Sets the {@code Remark} of the {@code Person} that we are building.
*/
public PersonBuilder withRemark(String remark) {
this.remark = new Remark(remark);
return this;
}



public Person build() {
return new Person(name, phone, email, address, tags);
return new Person(name, phone, email, address, remark, tags);
}

}

0 comments on commit b241ef8

Please sign in to comment.