Skip to content

Commit bf1e547

Browse files
authored
Merge pull request #56 from totoyoyo/make-people-fields-optional
Change address, email, and phone to optional (via placeholder)
2 parents b4caff7 + 1f08933 commit bf1e547

5 files changed

Lines changed: 27 additions & 13 deletions

File tree

src/main/java/seedu/address/logic/parser/persons/AddPersonCommandParser.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ public AddPersonCommand parse(String args) throws ParseException {
3838
ArgumentMultimap argMultimap =
3939
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_GROUP);
4040

41-
if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)
41+
if (!arePrefixesPresent(argMultimap, PREFIX_NAME)
4242
|| !argMultimap.getPreamble().isEmpty()) {
4343
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE));
4444
}
4545

4646
PersonName personName = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());
47-
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());
48-
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
49-
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
47+
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).orElse(Phone.PLACE_HOLDER));
48+
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).orElse(Email.PLACE_HOLDER));
49+
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).orElse(Address.PLACE_HOLDER));
5050
Set<Group> groupList = ParserUtil.parseGroups(argMultimap.getAllValues(PREFIX_GROUP));
5151

5252
Person person = new Person(personName, phone, email, address, groupList);

src/main/java/seedu/address/model/person/Address.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ public class Address {
1515
* The first character of the address must not be a whitespace,
1616
* otherwise " " (a blank string) becomes a valid input.
1717
*/
18-
public static final String VALIDATION_REGEX = "[^\\s].*";
18+
19+
public static final String PLACE_HOLDER = "No addresss";
20+
public static final String VALIDATION_REGEX = "[^\\s].*" + "|" + PLACE_HOLDER;
1921

2022
public final String value;
2123

src/main/java/seedu/address/model/person/Email.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ public class Email {
2424
private static final String DOMAIN_FIRST_CHARACTER_REGEX = "[^\\W_]"; // alphanumeric characters except underscore
2525
private static final String DOMAIN_MIDDLE_REGEX = "[a-zA-Z0-9.-]*"; // alphanumeric, period and hyphen
2626
private static final String DOMAIN_LAST_CHARACTER_REGEX = "[^\\W_]$";
27+
public static final String PLACE_HOLDER = "No email";
2728
public static final String VALIDATION_REGEX = LOCAL_PART_REGEX + "@"
28-
+ DOMAIN_FIRST_CHARACTER_REGEX + DOMAIN_MIDDLE_REGEX + DOMAIN_LAST_CHARACTER_REGEX;
29+
+ DOMAIN_FIRST_CHARACTER_REGEX + DOMAIN_MIDDLE_REGEX + DOMAIN_LAST_CHARACTER_REGEX + "|" + PLACE_HOLDER;
2930

3031
public final String value;
3132

src/main/java/seedu/address/model/person/Phone.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public class Phone {
1212

1313
public static final String MESSAGE_CONSTRAINTS =
1414
"Phone numbers should only contain numbers, and it should be at least 3 digits long";
15-
public static final String VALIDATION_REGEX = "\\d{3,}";
15+
public static final String PLACE_HOLDER = "No number";
16+
public static final String VALIDATION_REGEX = "\\d{3,}" + "|" + PLACE_HOLDER;
1617
public final String value;
1718

1819
/**

src/test/java/seedu/address/logic/parser/persons/AddPersonCommandParserTest.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@
2222
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_EMAIL_BOB;
2323
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_GROUP_FRIEND;
2424
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_GROUP_HUSBAND;
25+
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_NAME_AMY;
2526
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_NAME_BOB;
2627
import static seedu.address.logic.commands.persons.PersonCommandTestUtil.VALID_PHONE_BOB;
2728
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;
2829
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;
2930
import static seedu.address.testutil.TypicalPersons.AMY;
3031
import static seedu.address.testutil.TypicalPersons.BOB;
3132

33+
import java.util.HashSet;
34+
3235
import org.junit.jupiter.api.Test;
3336

3437
import seedu.address.logic.commands.persons.AddPersonCommand;
@@ -81,6 +84,12 @@ public void parse_optionalFieldsMissing_success() {
8184
Person expectedPerson = new PersonBuilder(AMY).withGroups().build();
8285
assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,
8386
new AddPersonCommand(expectedPerson));
87+
88+
Person expectedPersonOptional = new Person(new PersonName(VALID_NAME_AMY), new Phone(Phone.PLACE_HOLDER),
89+
new Email(Email.PLACE_HOLDER), new Address(Address.PLACE_HOLDER), new HashSet<>());
90+
assertParseSuccess(parser, NAME_DESC_AMY,
91+
new AddPersonCommand(expectedPersonOptional));
92+
8493
}
8594

8695
@Test
@@ -91,17 +100,18 @@ public void parse_compulsoryFieldMissing_failure() {
91100
assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,
92101
expectedMessage);
93102

103+
// Fields are now optional
94104
// missing phone prefix
95-
assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,
96-
expectedMessage);
105+
// assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,
106+
// expectedMessage);
97107

98108
// missing email prefix
99-
assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,
100-
expectedMessage);
109+
// assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,
110+
// expectedMessage);
101111

102112
// missing address prefix
103-
assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,
104-
expectedMessage);
113+
// assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,
114+
// expectedMessage);
105115

106116
// all prefixes missing
107117
assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,

0 commit comments

Comments
 (0)