Skip to content

Commit 0db7dd2

Browse files
authored
Merge pull request nus-cs2103-AY2021S1#67 from chrystalquek/change-person-fields
Change person fields
2 parents 195c6bf + b0e79cc commit 0db7dd2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+436
-863
lines changed

src/main/java/seedu/address/logic/commands/person/AddCommand.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package seedu.address.logic.commands.person;
22

33
import static java.util.Objects.requireNonNull;
4-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ADDRESS;
4+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_DESCRIPTION;
55
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_EMAIL;
66
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_NAME;
77
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_PHONE;
8-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_TAG;
8+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ROLE;
99

1010
import seedu.address.logic.commands.CommandResult;
1111
import seedu.address.logic.commands.exceptions.CommandException;
1212
import seedu.address.model.person.ModelPerson;
1313
import seedu.address.model.person.person.Person;
14-
import seedu.address.model.person.person.RoleEnum;
1514

1615
/**
1716
* Adds a person to the address book.
@@ -22,20 +21,17 @@ public class AddCommand extends Command {
2221

2322
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. "
2423
+ "Parameters: "
25-
+ "ROLE "
24+
+ PREFIX_ROLE + "ROLE "
2625
+ PREFIX_NAME + "NAME "
27-
+ PREFIX_PHONE + "PHONE "
26+
+ "[" + PREFIX_PHONE + "PHONE] "
2827
+ PREFIX_EMAIL + "EMAIL "
29-
+ PREFIX_ADDRESS + "ADDRESS "
30-
+ "[" + PREFIX_TAG + "TAG]...\n"
28+
+ "[" + PREFIX_DESCRIPTION + "DESCRIPTION]\n"
3129
+ "Example: " + COMMAND_WORD + " "
32-
+ RoleEnum.STAKEHOLDER.getArgument() + " "
30+
+ PREFIX_ROLE + "stk "
3331
+ PREFIX_NAME + "John Doe "
3432
+ PREFIX_PHONE + "98765432 "
3533
+ PREFIX_EMAIL + "[email protected] "
36-
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
37-
+ PREFIX_TAG + "friends "
38-
+ PREFIX_TAG + "owesMoney";
34+
+ PREFIX_DESCRIPTION + "End user";
3935

4036
public static final String MESSAGE_SUCCESS = "New person added: %1$s";
4137
public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book";

src/main/java/seedu/address/logic/commands/person/EditCommand.java

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
package seedu.address.logic.commands.person;
22

33
import static java.util.Objects.requireNonNull;
4-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ADDRESS;
4+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_DESCRIPTION;
55
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_EMAIL;
66
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_NAME;
77
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_PHONE;
8-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_TAG;
98
import static seedu.address.model.person.ModelPerson.PREDICATE_SHOW_ALL_PERSONS;
109

11-
import java.util.Collections;
12-
import java.util.HashSet;
1310
import java.util.List;
1411
import java.util.Optional;
15-
import java.util.Set;
1612

1713
import seedu.address.commons.core.Messages;
1814
import seedu.address.commons.core.index.Index;
1915
import seedu.address.commons.util.CollectionUtil;
2016
import seedu.address.logic.commands.CommandResult;
2117
import seedu.address.logic.commands.exceptions.CommandException;
2218
import seedu.address.model.person.ModelPerson;
23-
import seedu.address.model.person.person.Address;
2419
import seedu.address.model.person.person.Email;
2520
import seedu.address.model.person.person.Name;
2621
import seedu.address.model.person.person.Person;
2722
import seedu.address.model.person.person.Phone;
2823
import seedu.address.model.person.person.Role;
29-
import seedu.address.model.person.tag.Tag;
24+
import seedu.address.model.util.OptionalDescription;
3025

3126
/**
3227
* Edits the details of an existing person in the address book.
@@ -42,8 +37,7 @@ public class EditCommand extends Command {
4237
+ "[" + PREFIX_NAME + "NAME] "
4338
+ "[" + PREFIX_PHONE + "PHONE] "
4439
+ "[" + PREFIX_EMAIL + "EMAIL] "
45-
+ "[" + PREFIX_ADDRESS + "ADDRESS] "
46-
+ "[" + PREFIX_TAG + "TAG]...\n"
40+
+ "[" + PREFIX_DESCRIPTION + "DESCRIPTION]\n"
4741
+ "Example: " + COMMAND_WORD + " 1 "
4842
+ PREFIX_PHONE + "91234567 "
4943
+ PREFIX_EMAIL + "[email protected]";
@@ -98,11 +92,11 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
9892
Name updatedName = editPersonDescriptor.getName().orElse(personToEdit.getName());
9993
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
10094
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
101-
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
102-
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());
95+
OptionalDescription updatedDescription =
96+
editPersonDescriptor.getDescription().orElse(personToEdit.getDescription());
10397
Role updatedRole = personToEdit.getRole();
10498

105-
return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedRole);
99+
return new Person(updatedName, updatedPhone, updatedEmail, updatedRole, updatedDescription);
106100
}
107101

108102
@Override
@@ -131,8 +125,7 @@ public static class EditPersonDescriptor {
131125
private Name name;
132126
private Phone phone;
133127
private Email email;
134-
private Address address;
135-
private Set<Tag> tags;
128+
private OptionalDescription description;
136129

137130
public EditPersonDescriptor() {}
138131

@@ -144,15 +137,14 @@ public EditPersonDescriptor(EditPersonDescriptor toCopy) {
144137
setName(toCopy.name);
145138
setPhone(toCopy.phone);
146139
setEmail(toCopy.email);
147-
setAddress(toCopy.address);
148-
setTags(toCopy.tags);
140+
setDescription(toCopy.description);
149141
}
150142

151143
/**
152144
* Returns true if at least one field is edited.
153145
*/
154146
public boolean isAnyFieldEdited() {
155-
return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);
147+
return CollectionUtil.isAnyNonNull(name, phone, email, description);
156148
}
157149

158150
public void setName(Name name) {
@@ -179,29 +171,12 @@ public Optional<Email> getEmail() {
179171
return Optional.ofNullable(email);
180172
}
181173

182-
public void setAddress(Address address) {
183-
this.address = address;
174+
public void setDescription(OptionalDescription description) {
175+
this.description = description;
184176
}
185177

186-
public Optional<Address> getAddress() {
187-
return Optional.ofNullable(address);
188-
}
189-
190-
/**
191-
* Sets {@code tags} to this object's {@code tags}.
192-
* A defensive copy of {@code tags} is used internally.
193-
*/
194-
public void setTags(Set<Tag> tags) {
195-
this.tags = (tags != null) ? new HashSet<>(tags) : null;
196-
}
197-
198-
/**
199-
* Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}
200-
* if modification is attempted.
201-
* Returns {@code Optional#empty()} if {@code tags} is null.
202-
*/
203-
public Optional<Set<Tag>> getTags() {
204-
return (tags != null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();
178+
public Optional<OptionalDescription> getDescription() {
179+
return Optional.ofNullable(description);
205180
}
206181

207182
@Override
@@ -222,8 +197,7 @@ public boolean equals(Object other) {
222197
return getName().equals(e.getName())
223198
&& getPhone().equals(e.getPhone())
224199
&& getEmail().equals(e.getEmail())
225-
&& getAddress().equals(e.getAddress())
226-
&& getTags().equals(e.getTags());
200+
&& getDescription().equals(e.getDescription());
227201
}
228202
}
229203
}

src/main/java/seedu/address/logic/parser/person/AddCommandParser.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package seedu.address.logic.parser.person;
22

33
import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
4-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ADDRESS;
4+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_DESCRIPTION;
55
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_EMAIL;
66
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_NAME;
77
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_PHONE;
8-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_TAG;
8+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ROLE;
99

10-
import java.util.Set;
1110
import java.util.stream.Stream;
1211

1312
import seedu.address.logic.commands.person.AddCommand;
@@ -16,13 +15,13 @@
1615
import seedu.address.logic.parser.Parser;
1716
import seedu.address.logic.parser.Prefix;
1817
import seedu.address.logic.parser.exceptions.ParseException;
19-
import seedu.address.model.person.person.Address;
18+
import seedu.address.logic.parser.util.ParserCommon;
2019
import seedu.address.model.person.person.Email;
2120
import seedu.address.model.person.person.Name;
2221
import seedu.address.model.person.person.Person;
2322
import seedu.address.model.person.person.Phone;
2423
import seedu.address.model.person.person.Role;
25-
import seedu.address.model.person.tag.Tag;
24+
import seedu.address.model.util.OptionalDescription;
2625

2726
/**
2827
* Parses input arguments and creates a new AddCommand object for person
@@ -36,22 +35,21 @@ public class AddCommandParser implements Parser<AddCommand> {
3635
*/
3736
public AddCommand parse(String args) throws ParseException {
3837
ArgumentMultimap argMultimap =
39-
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,
40-
PREFIX_TAG);
38+
ArgumentTokenizer.tokenize(args, PREFIX_ROLE, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
39+
PREFIX_DESCRIPTION);
4140

42-
if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)
43-
|| argMultimap.getPreamble().isEmpty()) {
41+
if (!arePrefixesPresent(argMultimap, PREFIX_ROLE, PREFIX_NAME, PREFIX_EMAIL)
42+
|| !argMultimap.getPreamble().isEmpty()) {
4443
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));
4544
}
4645

47-
Role role = ParserUtil.parseRole(argMultimap.getPreamble());
46+
Role role = ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get());
4847
Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());
49-
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());
48+
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE));
5049
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
51-
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
52-
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));
50+
OptionalDescription description = ParserCommon.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION));
5351

54-
Person person = new Person(name, phone, email, address, tagList, role);
52+
Person person = new Person(name, phone, email, role, description);
5553

5654
return new AddCommand(person);
5755
}

src/main/java/seedu/address/logic/parser/person/CliSyntax.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
public class CliSyntax {
99

1010
/* Prefix definitions */
11-
public static final Prefix PREFIX_NAME = new Prefix("name/");
11+
public static final Prefix PREFIX_ROLE = new Prefix("r/");
12+
public static final Prefix PREFIX_NAME = new Prefix("n/");
1213
public static final Prefix PREFIX_PHONE = new Prefix("p/");
1314
public static final Prefix PREFIX_EMAIL = new Prefix("e/");
14-
public static final Prefix PREFIX_ADDRESS = new Prefix("a/");
15-
public static final Prefix PREFIX_TAG = new Prefix("t/");
15+
public static final Prefix PREFIX_DESCRIPTION = new Prefix("d/");
1616

1717
}

src/main/java/seedu/address/logic/parser/person/EditCommandParser.java

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,10 @@
22

33
import static java.util.Objects.requireNonNull;
44
import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
5-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_ADDRESS;
5+
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_DESCRIPTION;
66
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_EMAIL;
77
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_NAME;
88
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_PHONE;
9-
import static seedu.address.logic.parser.person.CliSyntax.PREFIX_TAG;
10-
11-
import java.util.Collection;
12-
import java.util.Collections;
13-
import java.util.Optional;
14-
import java.util.Set;
159

1610
import seedu.address.commons.core.index.Index;
1711
import seedu.address.logic.commands.person.EditCommand;
@@ -20,7 +14,7 @@
2014
import seedu.address.logic.parser.ArgumentTokenizer;
2115
import seedu.address.logic.parser.Parser;
2216
import seedu.address.logic.parser.exceptions.ParseException;
23-
import seedu.address.model.person.tag.Tag;
17+
import seedu.address.logic.parser.util.ParserCommon;
2418

2519
/**
2620
* Parses input arguments and creates a new EditCommand object
@@ -35,7 +29,7 @@ public class EditCommandParser implements Parser<EditCommand> {
3529
public EditCommand parse(String args) throws ParseException {
3630
requireNonNull(args);
3731
ArgumentMultimap argMultimap =
38-
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);
32+
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_DESCRIPTION);
3933

4034
Index index;
4135

@@ -50,15 +44,15 @@ public EditCommand parse(String args) throws ParseException {
5044
editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));
5145
}
5246
if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {
53-
editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));
47+
editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE)));
5448
}
5549
if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {
5650
editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));
5751
}
58-
if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {
59-
editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));
52+
if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {
53+
editPersonDescriptor.setDescription(ParserCommon.parseDescription(
54+
argMultimap.getValue(PREFIX_DESCRIPTION)));
6055
}
61-
parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);
6256

6357
if (!editPersonDescriptor.isAnyFieldEdited()) {
6458
throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);
@@ -67,19 +61,4 @@ public EditCommand parse(String args) throws ParseException {
6761
return new EditCommand(index, editPersonDescriptor);
6862
}
6963

70-
/**
71-
* Parses {@code Collection<String> tags} into a {@code Set<Tag>} if {@code tags} is non-empty.
72-
* If {@code tags} contain only one element which is an empty string, it will be parsed into a
73-
* {@code Set<Tag>} containing zero tags.
74-
*/
75-
private Optional<Set<Tag>> parseTagsForEdit(Collection<String> tags) throws ParseException {
76-
assert tags != null;
77-
78-
if (tags.isEmpty()) {
79-
return Optional.empty();
80-
}
81-
Collection<String> tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags;
82-
return Optional.of(ParserUtil.parseTags(tagSet));
83-
}
84-
8564
}

0 commit comments

Comments
 (0)