diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 2d07ca9a7e2..3a803e084aa 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -1,6 +1,7 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; +import static seedu.address.logic.parser.CliSyntax.NIL_FIELD; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; @@ -55,7 +56,9 @@ public class EditCommand extends Command { + "[" + PREFIX_METADATA + "Meta-data]...\n" + "Example: " + COMMAND_WORD + " 1 " + PREFIX_PHONE + "91234567 " - + PREFIX_EMAIL + "johndoe@example.com"; + + PREFIX_EMAIL + "johndoe@example.com\n\n" + + "Tip: To clear all of the person's roles, use " + PREFIX_ROLE + NIL_FIELD + "\n" + + "Tip: To clear all of the person's CCAs, use " + PREFIX_CCA + NIL_FIELD; public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Person: %1$s"; public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided."; diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 38bd2d376f8..4ab30096a8c 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -16,4 +16,6 @@ public class CliSyntax { public static final Prefix PREFIX_ATTENDANCE = new Prefix("att/"); public static final Prefix PREFIX_SESSIONS = new Prefix("s/"); public static final Prefix PREFIX_METADATA = new Prefix("d/"); + + public static final String NIL_FIELD = "nil"; } diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java index 575277c1579..b514399addf 100644 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/EditCommandParser.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; +import static seedu.address.logic.parser.CliSyntax.NIL_FIELD; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; @@ -89,7 +90,7 @@ private Optional> parseRolesForEdit(Collection roles) throws P if (roles.isEmpty()) { return Optional.empty(); } - Collection roleSet = roles.size() == 1 && roles.contains("") ? Collections.emptySet() : roles; + Collection roleSet = roles.size() == 1 && roles.contains(NIL_FIELD) ? Collections.emptySet() : roles; return Optional.of(ParserUtil.parseRoles(roleSet)); } @@ -104,7 +105,7 @@ private Optional> parseCcasForEdit(Collection ccas) throws Pars if (ccas.isEmpty()) { return Optional.empty(); } - Collection ccaSet = ccas.size() == 1 && ccas.contains("") ? Collections.emptySet() : ccas; + Collection ccaSet = ccas.size() == 1 && ccas.contains(NIL_FIELD) ? Collections.emptySet() : ccas; return Optional.of(ParserUtil.parseCcas(ccaSet)); } } diff --git a/src/main/java/seedu/address/model/cca/Cca.java b/src/main/java/seedu/address/model/cca/Cca.java index 58de0819e14..164f8b96808 100644 --- a/src/main/java/seedu/address/model/cca/Cca.java +++ b/src/main/java/seedu/address/model/cca/Cca.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.logic.parser.CliSyntax.NIL_FIELD; /** * Represents a CCA in the address book. @@ -9,8 +10,10 @@ */ public class Cca { - public static final String MESSAGE_CONSTRAINTS = "CCA names should be alphanumeric (but can include " - + "whitespace)"; + public static final String MESSAGE_CONSTRAINTS = "CCA names should be non-empty and alphanumeric " + + "(but can include whitespace).\n" + + "CCA names cannot be \"" + NIL_FIELD + "\" as \"" + NIL_FIELD + + "\" is reserved for denoting an empty CCA field."; public static final String VALIDATION_REGEX = "[\\p{Alnum}\\s]+"; public final String ccaName; @@ -30,7 +33,7 @@ public Cca(String ccaName) { * Returns true if a given string is a valid Cca name. */ public static boolean isValidCcaName(String test) { - return test.matches(VALIDATION_REGEX); + return !test.equals(NIL_FIELD) && test.matches(VALIDATION_REGEX); } /** diff --git a/src/main/java/seedu/address/model/roles/Role.java b/src/main/java/seedu/address/model/roles/Role.java index 59ef7c7dbef..3d4f084176b 100644 --- a/src/main/java/seedu/address/model/roles/Role.java +++ b/src/main/java/seedu/address/model/roles/Role.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.logic.parser.CliSyntax.NIL_FIELD; /** * Represents a Role in the address book. @@ -9,7 +10,10 @@ */ public class Role { - public static final String MESSAGE_CONSTRAINTS = "Role names should be alphanumeric with whitespace"; + public static final String MESSAGE_CONSTRAINTS = "Role names should be non-empty and alphanumeric " + + "(but can include whitespace).\n" + + "Role names cannot be \"" + NIL_FIELD + "\" as \"" + NIL_FIELD + + "\" is reserved for denoting an empty role field."; public static final String VALIDATION_REGEX = "[\\p{Alnum}\\s]+"; public final String roleName; @@ -29,7 +33,7 @@ public Role(String roleName) { * Returns true if a given string is a valid role name. */ public static boolean isValidRoleName(String test) { - return test.matches(VALIDATION_REGEX); + return !test.equals(NIL_FIELD) && test.matches(VALIDATION_REGEX); } @Override diff --git a/src/test/java/seedu/address/testutil/PersonUtil.java b/src/test/java/seedu/address/testutil/PersonUtil.java index b7b8d7cc2d1..c580e6ebf0b 100644 --- a/src/test/java/seedu/address/testutil/PersonUtil.java +++ b/src/test/java/seedu/address/testutil/PersonUtil.java @@ -1,5 +1,6 @@ package seedu.address.testutil; +import static seedu.address.logic.parser.CliSyntax.NIL_FIELD; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; @@ -63,7 +64,7 @@ public static String getEditPersonDescriptorDetails(EditPersonDescriptor descrip if (descriptor.getRoles().isPresent()) { Set roles = descriptor.getRoles().get(); if (roles.isEmpty()) { - sb.append(PREFIX_ROLE); + sb.append(PREFIX_ROLE + NIL_FIELD); } else { sb.append(PREFIX_ROLE); roles.forEach(s -> sb.append(PREFIX_ROLE).append(s.roleName).append(" ")); @@ -73,7 +74,7 @@ public static String getEditPersonDescriptorDetails(EditPersonDescriptor descrip if (descriptor.getCcas().isPresent()) { Set roles = descriptor.getCcas().get(); if (roles.isEmpty()) { - sb.append(PREFIX_CCA); + sb.append(PREFIX_CCA + NIL_FIELD); } else { roles.forEach(s -> sb.append(PREFIX_CCA).append(s.ccaName).append(" ")); }