diff --git a/src/main/java/seedu/siasa/logic/parser/contact/EditContactCommandParser.java b/src/main/java/seedu/siasa/logic/parser/contact/EditContactCommandParser.java index ed114e2aae3..e243e24c834 100644 --- a/src/main/java/seedu/siasa/logic/parser/contact/EditContactCommandParser.java +++ b/src/main/java/seedu/siasa/logic/parser/contact/EditContactCommandParser.java @@ -84,5 +84,4 @@ private Optional> parseTagsForEdit(Collection tags) throws Pars Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; return Optional.of(ParserUtil.parseTags(tagSet)); } - } diff --git a/src/main/java/seedu/siasa/logic/parser/policy/EditPolicyCommandParser.java b/src/main/java/seedu/siasa/logic/parser/policy/EditPolicyCommandParser.java index df289ddd4d4..e39d065f091 100644 --- a/src/main/java/seedu/siasa/logic/parser/policy/EditPolicyCommandParser.java +++ b/src/main/java/seedu/siasa/logic/parser/policy/EditPolicyCommandParser.java @@ -6,8 +6,14 @@ import static seedu.siasa.logic.parser.CliSyntax.PREFIX_CONTACT_INDEX; import static seedu.siasa.logic.parser.CliSyntax.PREFIX_EXPIRY; import static seedu.siasa.logic.parser.CliSyntax.PREFIX_PAYMENT; +import static seedu.siasa.logic.parser.CliSyntax.PREFIX_TAG; import static seedu.siasa.logic.parser.CliSyntax.PREFIX_TITLE; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.Set; + import seedu.siasa.commons.core.index.Index; import seedu.siasa.logic.commands.policy.EditPolicyCommand; import seedu.siasa.logic.parser.ArgumentMultimap; @@ -15,6 +21,7 @@ import seedu.siasa.logic.parser.Parser; import seedu.siasa.logic.parser.ParserUtil; import seedu.siasa.logic.parser.exceptions.ParseException; +import seedu.siasa.model.tag.Tag; /** * Parses input arguments and creates a new EditPolicyCommand object @@ -35,7 +42,8 @@ public EditPolicyCommand parse(String args) throws ParseException { PREFIX_EXPIRY, PREFIX_PAYMENT, PREFIX_COMMISSION, - PREFIX_CONTACT_INDEX); + PREFIX_CONTACT_INDEX, + PREFIX_TAG); Index index; @@ -73,6 +81,7 @@ public EditPolicyCommand parse(String args) throws ParseException { editPolicyDescriptor.setOwnerIndex(ParserUtil.parseIndex( argMultimap.getValue(PREFIX_CONTACT_INDEX).get())); } + parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPolicyDescriptor::setTags); if (!editPolicyDescriptor.isAnyFieldEdited()) { throw new ParseException(EditPolicyCommand.MESSAGE_NOT_EDITED); @@ -81,4 +90,18 @@ public EditPolicyCommand parse(String args) throws ParseException { return new EditPolicyCommand(index, editPolicyDescriptor); } + /** + * Parses {@code Collection tags} into a {@code Set} if {@code tags} is non-empty. + * If {@code tags} contain only one element which is an empty string, it will be parsed into a + * {@code Set} containing zero tags. + */ + private Optional> parseTagsForEdit(Collection tags) throws ParseException { + assert tags != null; + + if (tags.isEmpty()) { + return Optional.empty(); + } + Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; + return Optional.of(ParserUtil.parseTags(tagSet)); + } }