-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[W5][M11-1]Wang Jiannan #25
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
package seedu.addressbook.commands; | ||
|
||
import seedu.addressbook.common.Messages; | ||
import seedu.addressbook.data.exception.IllegalValueException; | ||
import seedu.addressbook.data.person.*; | ||
import seedu.addressbook.data.person.UniquePersonList.DuplicatePersonException; | ||
import seedu.addressbook.data.person.UniquePersonList.PersonNotFoundException; | ||
import seedu.addressbook.data.tag.Tag; | ||
|
||
import java.util.HashSet; | ||
import java.util.Set; | ||
|
||
/** | ||
*Edit the particulars of a contact in the addressBook | ||
*/ | ||
public class EditCommand extends Command{ | ||
public static final String COMMAND_WORD = "edit"; | ||
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits a contact in the address book. " | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 for updating the in-app help |
||
+ "Enter the index of the contact to be edited,followed by a '/ '.\n" | ||
+ "If the contact exists, enter the new particulars of this contact in the correct format.\n" | ||
+ "Contact details can be marked private by prepending 'p' to the prefix.\n" | ||
+ "Parameters: NAME [p]p/PHONE [p]e/EMAIL [p]a/ADDRESS [t/TAG]...\n" | ||
+ "Example: " + COMMAND_WORD | ||
+ " John Doe p/98765432 e/[email protected] a/311, Clementi Ave 2, #02-25 t/friends t/owesMoney"; | ||
|
||
public static final String MESSAGE_SUCCESS = "Contact is edited: %1$s"; | ||
//public static final String MESSAGE_NONEXISTENT_PERSON = "This person does not exist in the address book"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Eliminate unused code and do not retain them commented, you can always get it back from previous versions if necessary. |
||
|
||
private final Person toEdit; | ||
|
||
/** | ||
* Convenience constructor using raw values. | ||
* | ||
* @throws IllegalValueException if any of the raw values are invalid | ||
*/ | ||
|
||
public EditCommand(int targetVisibleIndex,String name, | ||
String phone, boolean isPhonePrivate, | ||
String email, boolean isEmailPrivate, | ||
String address, boolean isAddressPrivate, | ||
Set<String> tags) throws IllegalValueException { | ||
|
||
final Set<Tag> tagSet = new HashSet<>(); | ||
for (String tagName : tags) { | ||
tagSet.add(new Tag(tagName)); | ||
} | ||
setTargetIndex(targetVisibleIndex); | ||
|
||
this.toEdit = new Person( | ||
new Name(name), | ||
new Phone(phone, isPhonePrivate), | ||
new Email(email, isEmailPrivate), | ||
new Address(address, isAddressPrivate), | ||
tagSet | ||
); | ||
} | ||
|
||
@Override | ||
public CommandResult execute() { | ||
try { | ||
|
||
final ReadOnlyPerson target = getTargetPerson(); | ||
System.out.println("fk"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inappropriate code! Use the debugger instead to trace the program flow! |
||
addressBook.removePerson(target); | ||
|
||
addressBook.addPerson(toEdit); | ||
return new CommandResult(MESSAGE_SUCCESS); | ||
} catch (IndexOutOfBoundsException ie) { | ||
return new CommandResult(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); | ||
} catch (PersonNotFoundException pnfe) { | ||
return new CommandResult(Messages.MESSAGE_PERSON_NOT_IN_ADDRESSBOOK); | ||
} | ||
catch (DuplicatePersonException dpethisisuseless){ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Coding standard violation here. (2 counts!, can you identify them?) |
||
return new CommandResult("DuplicationPersonException thrown,never gonna happen though"); | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,14 @@ | ||
package seedu.addressbook.parser; | ||
|
||
import static seedu.addressbook.common.Messages.MESSAGE_INVALID_COMMAND_FORMAT; | ||
import static seedu.addressbook.common.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; | ||
import seedu.addressbook.commands.*; | ||
import seedu.addressbook.data.exception.IllegalValueException; | ||
|
||
import java.util.Arrays; | ||
import java.util.Collection; | ||
import java.util.Collections; | ||
import java.util.HashSet; | ||
import java.util.Set; | ||
import java.util.*; | ||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import seedu.addressbook.commands.AddCommand; | ||
import seedu.addressbook.commands.ClearCommand; | ||
import seedu.addressbook.commands.Command; | ||
import seedu.addressbook.commands.DeleteCommand; | ||
import seedu.addressbook.commands.ExitCommand; | ||
import seedu.addressbook.commands.FindCommand; | ||
import seedu.addressbook.commands.HelpCommand; | ||
import seedu.addressbook.commands.IncorrectCommand; | ||
import seedu.addressbook.commands.ListCommand; | ||
import seedu.addressbook.commands.ViewAllCommand; | ||
import seedu.addressbook.commands.ViewCommand; | ||
import seedu.addressbook.data.exception.IllegalValueException; | ||
import static seedu.addressbook.common.Messages.MESSAGE_INVALID_COMMAND_FORMAT; | ||
import static seedu.addressbook.common.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; | ||
|
||
/** | ||
* Parses user input. | ||
|
@@ -79,6 +65,9 @@ public Command parseCommand(String userInput) { | |
case DeleteCommand.COMMAND_WORD: | ||
return prepareDelete(arguments); | ||
|
||
case EditCommand.COMMAND_WORD: | ||
return prepareEdit(arguments); | ||
|
||
case ClearCommand.COMMAND_WORD: | ||
return new ClearCommand(); | ||
|
||
|
@@ -174,6 +163,60 @@ private Command prepareDelete(String args) { | |
} | ||
} | ||
|
||
private Command prepareEdit (String args){ | ||
if(args.split(" ").length<=4){ | ||
System.out.println("args not long enough"); | ||
} | ||
|
||
args=args.trim(); | ||
|
||
// args here is 1 J D p/98984988 e/[email protected] a/Clementi t/mad t/friend | ||
int position = args.indexOf(" "); | ||
|
||
String indexNum = args.substring(0,position); | ||
String info = args.substring(position); | ||
System.out.println(indexNum); | ||
System.out.println(info); | ||
final int targetIndex; | ||
|
||
try { | ||
targetIndex = parseArgsAsDisplayedIndex(indexNum); | ||
// targetIndex is 1 here | ||
|
||
} catch (ParseException pe) { | ||
return new IncorrectCommand("Wrong format"); | ||
} catch (NumberFormatException nfe){ | ||
return new IncorrectCommand("Wrong number format"); | ||
} | ||
|
||
final Matcher matcher = PERSON_DATA_ARGS_FORMAT.matcher(info.trim()); | ||
// Validate arg string format | ||
if (!matcher.matches()) { | ||
return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); | ||
} | ||
try { | ||
return new EditCommand( | ||
targetIndex, | ||
|
||
matcher.group("name"), | ||
|
||
matcher.group("phone"), | ||
isPrivatePrefixPresent(matcher.group("isPhonePrivate")), | ||
|
||
matcher.group("email"), | ||
isPrivatePrefixPresent(matcher.group("isEmailPrivate")), | ||
|
||
matcher.group("address"), | ||
isPrivatePrefixPresent(matcher.group("isAddressPrivate")), | ||
|
||
getTagsFromArgs(matcher.group("tagArguments")) | ||
|
||
); | ||
} catch (IllegalValueException ive) { | ||
return new IncorrectCommand(ive.getMessage()); | ||
} | ||
} | ||
|
||
/** | ||
* Parses arguments in the context of the view command. | ||
* | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do not import everything using
*
, import only necessary classes