Skip to content

Commit

Permalink
Update add and edit command and their relevant parsers
Browse files Browse the repository at this point in the history
  • Loading branch information
wenzongteo committed Oct 14, 2017
1 parent 437214e commit 9c0ac0d
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 19 deletions.
2 changes: 2 additions & 0 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHOTO;

import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.person.Person;
Expand All @@ -32,6 +33,7 @@ public class AddCommand extends UndoableCommand {
+ PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "[email protected] "
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_PHOTO + "/data/photo.jpeg "
+ PREFIX_TAG + "friends "
+ PREFIX_TAG + "owesMoney";

Expand Down
16 changes: 14 additions & 2 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Photo;
import seedu.address.model.person.ReadOnlyPerson;
import seedu.address.model.person.exceptions.DuplicatePersonException;
import seedu.address.model.person.exceptions.PersonNotFoundException;
Expand Down Expand Up @@ -135,9 +136,10 @@ private static Person createEditedPerson(ReadOnlyPerson personToEdit,
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
Photo updatedPhoto = editPersonDescriptor.getPhoto().orElse(personToEdit.getPhoto());
Set<Tag> updatedTags = processTags(personToEdit, editPersonDescriptor);

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

@Override
Expand Down Expand Up @@ -167,6 +169,7 @@ public static class EditPersonDescriptor {
private Phone phone;
private Email email;
private Address address;
private Photo photo;
private Set<Tag> tags;

public EditPersonDescriptor() {}
Expand All @@ -176,14 +179,15 @@ public EditPersonDescriptor(EditPersonDescriptor toCopy) {
this.phone = toCopy.phone;
this.email = toCopy.email;
this.address = toCopy.address;
this.photo = toCopy.photo;
this.tags = toCopy.tags;
}

/**
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(this.name, this.phone, this.email, this.address, this.tags);
return CollectionUtil.isAnyNonNull(this.name, this.phone, this.email, this.address, this.photo, this.tags);
}

public void setName(Name name) {
Expand All @@ -210,6 +214,14 @@ public Optional<Email> getEmail() {
return Optional.ofNullable(email);
}

public void setPhoto(Photo photo) {
this.photo = photo;
}

public Optional<Photo> getPhoto() {
return Optional.ofNullable(photo);
}

public void setAddress(Address address) {
this.address = address;
}
Expand Down
15 changes: 6 additions & 9 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHOTO;

import java.util.Set;
import java.util.stream.Stream;
Expand All @@ -18,6 +19,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Photo;
import seedu.address.model.person.ReadOnlyPerson;
import seedu.address.model.tag.Tag;

Expand All @@ -33,27 +35,22 @@ public class AddCommandParser implements Parser<AddCommand> {
*/
public AddCommand parse(String args) throws ParseException {
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PHOTO, PREFIX_TAG);

if (!arePrefixesPresent(argMultimap, PREFIX_EMAIL)) {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,
AddCommand.MESSAGE_USAGE)); //Need to change the MESSAGE_USAGE.
AddCommand.MESSAGE_USAGE));
}

/*
if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));
}
//This forces user to enter all the prefixes.
*/
try {
Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME)).get();
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();
Photo photo = ParserUtil.parsePhoto(argMultimap.getValue(PREFIX_PHOTO)).get();
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

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

return new AddCommand(person);
} catch (IllegalValueException ive) {
Expand Down
1 change: 1 addition & 0 deletions src/main/java/seedu/address/logic/parser/CliSyntax.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ public class CliSyntax {
public static final Prefix PREFIX_EMAIL = new Prefix("e/");
public static final Prefix PREFIX_ADDRESS = new Prefix("a/");
public static final Prefix PREFIX_TAG = new Prefix("t/");
public static final Prefix PREFIX_PHOTO = new Prefix("dp/");

}
17 changes: 17 additions & 0 deletions src/main/java/seedu/address/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import seedu.address.model.person.Email;
import seedu.address.model.person.Name;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Photo;
import seedu.address.model.tag.Tag;

/**
Expand Down Expand Up @@ -98,6 +99,22 @@ public static Optional<Address> parseAddressForEdit(Optional<String> address) th
return address.isPresent() ? Optional.of(new Address(address.get())) : Optional.empty();
}

/**
* Parses a {@code Optional<String> address} into an {@code Optional<Address>}
* See header comment of this class regarding the use of {@code Optional} parameters.
*/
public static Optional<Photo> parsePhoto(Optional<String> photo) throws IllegalValueException {
return photo.isPresent() ? Optional.of(new Photo(photo.get())) : Optional.empty();
}

/**
* Parses a {@code Optional<String> address} into an {@code Optional<Address>} if {@code address} is present.
* See header comment of this class regarding the use of {@code Optional} parameters.
*/
public static Optional<Photo> parsePhotoForEdit(Optional<String> photo) throws IllegalValueException {
return photo.isPresent() ? Optional.of(new Photo(photo.get())) : Optional.empty();
}

/**
* Parses a {@code Optional<String> email} into an {@code Optional<Email>}
* See header comment of this class regarding the use of {@code Optional} parameters.
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/seedu/address/model/util/SampleDataUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Photo;
import seedu.address.model.person.exceptions.DuplicatePersonException;
import seedu.address.model.tag.Tag;

Expand All @@ -22,22 +23,22 @@ public static Person[] getSamplePersons() {
try {
return new Person[] {
new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("[email protected]"),
new Address("Blk 30 Geylang Street 29, #06-40"),
new Address("Blk 30 Geylang Street 29, #06-40"), new Photo("data/default.jpeg"),
getTagSet("friends")),
new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("[email protected]"),
new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"),
new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), new Photo("data/default.jpeg"),
getTagSet("colleagues", "friends")),
new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("[email protected]"),
new Address("Blk 11 Ang Mo Kio Street 74, #11-04"),
new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), new Photo("data/default.jpeg"),
getTagSet("neighbours")),
new Person(new Name("David Li"), new Phone("91031282"), new Email("[email protected]"),
new Address("Blk 436 Serangoon Gardens Street 26, #16-43"),
new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), new Photo("data/default.jpeg"),
getTagSet("family")),
new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("[email protected]"),
new Address("Blk 47 Tampines Street 20, #17-35"),
new Address("Blk 47 Tampines Street 20, #17-35"), new Photo("data/default.jpeg"),
getTagSet("classmates")),
new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("[email protected]"),
new Address("Blk 45 Aljunied Street 85, #11-31"),
new Address("Blk 45 Aljunied Street 85, #11-31"), new Photo("data/default.jpeg"),
getTagSet("colleagues"))
};
} catch (IllegalValueException e) {
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/seedu/address/storage/XmlAdaptedPerson.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Photo;
import seedu.address.model.person.ReadOnlyPerson;
import seedu.address.model.tag.Tag;

Expand All @@ -29,6 +30,8 @@ public class XmlAdaptedPerson {
private String email;
@XmlElement(required = true)
private String address;
@XmlElement(required = true)
private String photo;

@XmlElement
private List<XmlAdaptedTag> tagged = new ArrayList<>();
Expand All @@ -50,6 +53,7 @@ public XmlAdaptedPerson(ReadOnlyPerson source) {
phone = source.getPhone().value;
email = source.getEmail().value;
address = source.getAddress().value;
photo = source.getPhoto().value;
tagged = new ArrayList<>();
for (Tag tag : source.getTags()) {
tagged.add(new XmlAdaptedTag(tag));
Expand All @@ -70,7 +74,8 @@ public Person toModelType() throws IllegalValueException {
final Phone phone = new Phone(this.phone);
final Email email = new Email(this.email);
final Address address = new Address(this.address);
final Photo photo = new Photo(this.photo);
final Set<Tag> tags = new HashSet<>(personTags);
return new Person(name, phone, email, address, tags);
return new Person(name, phone, email, address, photo, tags);
}
}
2 changes: 1 addition & 1 deletion src/main/resources/view/PersonListCard.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<Insets top="5" right="5" bottom="5" left="15" />
</padding>
<HBox spacing = "5" alignment = "CENTER">
<Label fx:id="photo" styleClass="cell_small_label" text="\$address" />
<Label fx:id="photo" styleClass="cell_small_label" text="\$photo" />
</HBox>
</VBox>
</GridPane>
Expand Down

0 comments on commit 9c0ac0d

Please sign in to comment.