Skip to content

Commit

Permalink
Merge pull request AY2324S1-CS2103T-T14-2#108 from wujy28/branch-Edit…
Browse files Browse the repository at this point in the history
…-Command

Fix Issues in Edit Command
  • Loading branch information
longnguyentan committed Oct 18, 2023
2 parents f85622f + fe15562 commit 1da5292
Show file tree
Hide file tree
Showing 18 changed files with 236 additions and 124 deletions.
8 changes: 8 additions & 0 deletions src/main/java/seedu/address/logic/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,16 @@ public static String format(Patient patient) {
.append(patient.getPhone())
.append("; Email: ")
.append(patient.getEmail())
.append("; Gender: ")
.append(patient.getGender())
.append("; IC Number: ")
.append(patient.getIcNumber())
.append("; Birthday: ")
.append(patient.getBirthday())
.append("; Address: ")
.append(patient.getAddress())
.append("; Department: ")
.append(patient.getAssignedDepartment())
.append("; Tags: ");
patient.getTags().forEach(builder::append);
return builder.toString();
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
Expand All @@ -25,12 +28,18 @@ public class AddCommand extends Command {
+ PREFIX_NAME + "NAME "
+ PREFIX_PHONE + "PHONE "
+ PREFIX_EMAIL + "EMAIL "
+ PREFIX_GENDER + "GENDER "
+ PREFIX_IC_NUMBER + "IC_NUMBER "
+ PREFIX_BIRTHDAY + "BIRTHDAY "
+ PREFIX_ADDRESS + "ADDRESS "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_NAME + "John Doe "
+ PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "johnd@example.com "
+ PREFIX_GENDER + "MALE "
+ PREFIX_IC_NUMBER + "S2840182A "
+ PREFIX_BIRTHDAY + "02/01/1998 "
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_TAG + "friends "
+ PREFIX_TAG + "owesMoney";
Expand Down
82 changes: 35 additions & 47 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
Expand All @@ -22,15 +25,13 @@
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.patient.Address;
import seedu.address.model.patient.AssignedDepartment;
import seedu.address.model.patient.Birthday;
import seedu.address.model.patient.Email;
import seedu.address.model.patient.Gender;
import seedu.address.model.patient.IcNumber;
import seedu.address.model.patient.Name;
import seedu.address.model.patient.Patient;
import seedu.address.model.patient.Phone;
import seedu.address.model.patient.Record;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -43,10 +44,16 @@ public class EditCommand extends Command {
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the patient identified "
+ "by the index number used in the displayed patient list. "
+ "Existing values will be overwritten by the input values.\n"
+ "Parameters: INDEX (must be a positive integer) " + "[" + PREFIX_NAME + "NAME] " + "[" + PREFIX_PHONE
+ "PHONE] " + "[" + PREFIX_EMAIL + "EMAIL] " + "[" + PREFIX_ADDRESS + "ADDRESS] " + "[" + PREFIX_TAG
+ "TAG]...\n" + "Example: " + COMMAND_WORD + " 1 " + PREFIX_PHONE + "91234567 " + PREFIX_EMAIL
+ "johndoe@example.com";
+ "Parameters: INDEX (must be a positive integer) "
+ "[" + PREFIX_NAME + "NAME] "
+ "[" + PREFIX_PHONE + "PHONE] "
+ "[" + PREFIX_EMAIL + "EMAIL] "
+ "[" + PREFIX_GENDER + "GENDER] "
+ "[" + PREFIX_IC_NUMBER + "IC_NUMBER] "
+ "[" + PREFIX_BIRTHDAY + "BIRTHDAY] "
+ "[" + PREFIX_ADDRESS + "ADDRESS] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " 1 " + PREFIX_PHONE + "91234567 " + PREFIX_EMAIL + "johndoe@example.com";

public static final String MESSAGE_EDIT_PATIENT_SUCCESS = "Edited Patient: %1$s";
public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided.";
Expand Down Expand Up @@ -102,13 +109,10 @@ private static Patient createEditedPatient(Patient patientToEdit, EditPatientDes
IcNumber updatedIcNumber = editPatientDescriptor.getIcNumber().orElse(patientToEdit.getIcNumber());
Birthday updatedBirthday = editPatientDescriptor.getBirthday().orElse(patientToEdit.getBirthday());
Address updatedAddress = editPatientDescriptor.getAddress().orElse(patientToEdit.getAddress());
// AssignedDepartment updatedDepartment = editPatientDescriptor.getDepartment()
// .orElse(patientToEdit.getAssignedDepartment());
Set<Tag> updatedTags = editPatientDescriptor.getTags().orElse(patientToEdit.getTags());
// Record updatedRecord = editPatientDescriptor.getRecord().orElse(patientToEdit.getRecord());

return new Patient(updatedName, updatedPhone, updatedEmail, updatedGender, updatedIcNumber, updatedBirthday,
updatedAddress, updatedTags);
updatedAddress, updatedTags);
}


Expand Down Expand Up @@ -147,8 +151,6 @@ public static class EditPatientDescriptor {
private Birthday birthday;
private Address address;
private Set<Tag> tags;
private AssignedDepartment department;
private Record record;

public EditPatientDescriptor() {
}
Expand All @@ -161,6 +163,9 @@ public EditPatientDescriptor(EditPatientDescriptor toCopy) {
setName(toCopy.name);
setPhone(toCopy.phone);
setEmail(toCopy.email);
setGender(toCopy.gender);
setIcNumber(toCopy.icNumber);
setBirthday(toCopy.birthday);
setAddress(toCopy.address);
setTags(toCopy.tags);
}
Expand All @@ -169,7 +174,7 @@ public EditPatientDescriptor(EditPatientDescriptor toCopy) {
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);
return CollectionUtil.isAnyNonNull(name, phone, email, gender, icNumber, birthday, address, tags);
}

public void setName(Name name) {
Expand Down Expand Up @@ -204,26 +209,6 @@ public Optional<Address> getAddress() {
return Optional.ofNullable(address);
}

public void setRecord(Record record) {
this.record = record;
}

public void setInitialObservation(String initialObservation) {
record.setInitialObservations(initialObservation);
}

public void setTreatmentPlan(String treatmentPlan) {
record.setTreatmentPlan(treatmentPlan);
}

public void setDiagnosis(String diagnosis) {
record.setDiagnosis(diagnosis);
}

public Optional<Record> getRecord() {
return Optional.ofNullable(record);
}

/**
* Sets {@code tags} to this object's {@code tags}.
* A defensive copy of {@code tags} is used internally.
Expand Down Expand Up @@ -253,10 +238,14 @@ public boolean equals(Object other) {
}

EditPatientDescriptor otherEditPatientDescriptor = (EditPatientDescriptor) other;
return Objects.equals(name, otherEditPatientDescriptor.name) && Objects.equals(phone,
otherEditPatientDescriptor.phone) && Objects.equals(email, otherEditPatientDescriptor.email)
&& Objects.equals(address, otherEditPatientDescriptor.address) && Objects.equals(tags,
otherEditPatientDescriptor.tags);
return Objects.equals(name, otherEditPatientDescriptor.name)
&& Objects.equals(phone, otherEditPatientDescriptor.phone)
&& Objects.equals(email, otherEditPatientDescriptor.email)
&& Objects.equals(gender, otherEditPatientDescriptor.gender)
&& Objects.equals(icNumber, otherEditPatientDescriptor.icNumber)
&& Objects.equals(birthday, otherEditPatientDescriptor.birthday)
&& Objects.equals(address, otherEditPatientDescriptor.address)
&& Objects.equals(tags, otherEditPatientDescriptor.tags);
}

public void setGender(Gender gender) {
Expand All @@ -283,18 +272,17 @@ public Optional<IcNumber> getIcNumber() {
return Optional.ofNullable(icNumber);
}

public void setDepartment(AssignedDepartment department) {
this.department = department;
}

public Optional<AssignedDepartment> getDepartment() {
return Optional.ofNullable(department);
}

@Override
public String toString() {
return new ToStringBuilder(this).add("name", name).add("phone", phone).add("email", email)
.add("address", address).add("tags", tags).toString();
return new ToStringBuilder(this)
.add("name", name)
.add("phone", phone)
.add("email", email)
.add("gender", gender)
.add("icNumber", icNumber)
.add("birthday", birthday)
.add("address", address)
.add("tags", tags).toString();
}
}
}
24 changes: 19 additions & 5 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@

import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.Messages.MESSAGE_REQUIRED_COMMAND_NOT_FOUND_FORMAT;
import static seedu.address.logic.parser.CliSyntax.*;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -13,7 +20,14 @@

import seedu.address.logic.commands.AddCommand;
import seedu.address.logic.parser.exceptions.ParseException;
import seedu.address.model.patient.*;
import seedu.address.model.patient.Address;
import seedu.address.model.patient.Birthday;
import seedu.address.model.patient.Email;
import seedu.address.model.patient.Gender;
import seedu.address.model.patient.IcNumber;
import seedu.address.model.patient.Name;
import seedu.address.model.patient.Patient;
import seedu.address.model.patient.Phone;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -23,8 +37,8 @@ public class AddCommandParser implements Parser<AddCommand> {

public static final Prefix[] RELEVANT_PREFIXES = new Prefix[]{PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_GENDER, PREFIX_IC_NUMBER, PREFIX_BIRTHDAY, PREFIX_ADDRESS, PREFIX_TAG};
public static final Prefix[] RELEVANT_PREFIXES_WITHOUT_TAG = new Prefix[]{PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL
, PREFIX_GENDER, PREFIX_IC_NUMBER, PREFIX_BIRTHDAY, PREFIX_ADDRESS};
public static final Prefix[] RELEVANT_PREFIXES_WITHOUT_TAG = new Prefix[]{PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_GENDER, PREFIX_IC_NUMBER, PREFIX_BIRTHDAY, PREFIX_ADDRESS};
public static final Prefix[] REQUIRED_PREFIXES = new Prefix[]{PREFIX_NAME};

public static final Prefix[] OPTIONAL_PREFIXES = new Prefix[]{PREFIX_PHONE, PREFIX_EMAIL, PREFIX_GENDER,
Expand Down Expand Up @@ -60,7 +74,7 @@ public static Prefix[] getPrefixesPresent(ArgumentMultimap argMultimap) {
* @throws ParseException if the user input does not conform the expected format
*/
public static Patient createPatientFromPrefixes(ArgumentMultimap argMultimap, Prefix[] prefixes)
throws ParseException {
throws ParseException {
// filling the fields with default values
Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());
Phone phone = new Phone(Phone.DEFAULT_PHONE);
Expand Down
22 changes: 3 additions & 19 deletions src/main/java/seedu/address/logic/parser/EditCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,12 @@
import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_DEPARTMENT;
import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;
import static seedu.address.logic.parser.CliSyntax.PREFIX_INITIAL_OBSERVATION;
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TREATMENT_PLAN;

import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -41,7 +37,7 @@ public class EditCommandParser implements Parser<EditCommand> {
public EditCommand parse(String args) throws ParseException {
requireNonNull(args);
ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_TAG, PREFIX_GENDER, PREFIX_BIRTHDAY, PREFIX_IC_NUMBER, PREFIX_DEPARTMENT);
PREFIX_ADDRESS, PREFIX_TAG, PREFIX_GENDER, PREFIX_BIRTHDAY, PREFIX_IC_NUMBER);

Index index;

Expand All @@ -51,7 +47,8 @@ public EditCommand parse(String args) throws ParseException {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);
}

argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);
argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_GENDER,
PREFIX_IC_NUMBER, PREFIX_BIRTHDAY, PREFIX_ADDRESS);

EditPatientDescriptor editPatientDescriptor = new EditPatientDescriptor();

Expand All @@ -76,19 +73,6 @@ public EditCommand parse(String args) throws ParseException {
if (argMultimap.getValue(PREFIX_IC_NUMBER).isPresent()) {
editPatientDescriptor.setIcNumber(ParserUtil.parseIcNumber(argMultimap.getValue(PREFIX_IC_NUMBER).get()));
}
if (argMultimap.getValue(PREFIX_DEPARTMENT).isPresent()) {
editPatientDescriptor.setDepartment(
ParserUtil.parseAssignedDepartment(argMultimap.getValue(PREFIX_DEPARTMENT).get()));
}
if (argMultimap.getValue(PREFIX_INITIAL_OBSERVATION).isPresent()) {
editPatientDescriptor.setInitialObservation(argMultimap.getValue(PREFIX_INITIAL_OBSERVATION).get());
}
if (argMultimap.getValue(PREFIX_DIAGNOSIS).isPresent()) {
editPatientDescriptor.setDiagnosis(argMultimap.getValue(PREFIX_DIAGNOSIS).get());
}
if (argMultimap.getValue(PREFIX_TREATMENT_PLAN).isPresent()) {
editPatientDescriptor.setTreatmentPlan(argMultimap.getValue(PREFIX_TREATMENT_PLAN).get());
}

parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPatientDescriptor::setTags);

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/Address.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ public class Address {
* otherwise " " (a blank string) becomes a valid input.
*/
public static final String VALIDATION_REGEX = "[^\\s].*";
public static final String DEFAULT_ADDRESS = "No address was added";

public final String value;
public static String DEFAULT_ADDRESS = "No address was added";

/**
* Constructs an {@code Address}.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/Age.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class Age {
public static final String MESSAGE_CONSTRAINTS =
"Age should only contain numbers, and it should not be negative";
public static final String VALIDATION_REGEX = "\\d+";
public static String DEFAULT_AGE = "00";
public static final String DEFAULT_AGE = "00";
public final String value;

/**
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/Birthday.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ public class Birthday {
public static final String MESSAGE_CONSTRAINTS =
"Birth dates should only contain numbers in valid dd/MM/yyyy format";
public static final String VALIDATION_REGEX = "\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}";
public static final String DEFAULT_BIRTHDAY = "01/01/2000";
public final LocalDate value;
public final String strValue;
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
public static String DEFAULT_BIRTHDAY = "01/01/2000";
/**
* Constructs a {@code Birthday}.
*
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/seedu/address/model/patient/Email.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*/
public class Email {

public static final String DEFAULT_EMAIL = "default_email@gmail.com";
private static final String SPECIAL_CHARACTERS = "+_.-";
public static final String MESSAGE_CONSTRAINTS = "Emails should be of the format local-part@domain "
+ "and adhere to the following constraints:\n"
Expand All @@ -30,7 +31,7 @@ public class Email {
private static final String DOMAIN_LAST_PART_REGEX = "(" + DOMAIN_PART_REGEX + "){2,}$"; // At least two chars
private static final String DOMAIN_REGEX = "(" + DOMAIN_PART_REGEX + "\\.)*" + DOMAIN_LAST_PART_REGEX;
public static final String VALIDATION_REGEX = LOCAL_PART_REGEX + "@" + DOMAIN_REGEX;
public static String DEFAULT_EMAIL = "default_email@gmail.com";

public final String value;

/**
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/Gender.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class Gender {
"Gender should only be MALE, FEMALE or OTHER, and it should not be blank";

public static final String VALIDATION_REGEX = "\\p{Alnum}*";
public static String DEFAULT_GENDER = "OTHER";
public static final String DEFAULT_GENDER = "OTHER";
public final String value;

enum Genders {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/IcNumber.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class IcNumber {
public static final String MESSAGE_CONSTRAINTS =
"IC Number should start and end with an alphabet with non negative numbers in between";
public static final String VALIDATION_REGEX = "^[A-Z]\\d{7}[A-Z]$";
public static String DEFAULT_IC_NUMBER = "t0000000a";
public static final String DEFAULT_IC_NUMBER = "t0000000a";
public final String value;

/**
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/address/model/patient/Phone.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class Phone {
public static final String MESSAGE_CONSTRAINTS =
"Phone numbers should only contain numbers, and it should be at least 3 digits long";
public static final String VALIDATION_REGEX = "\\d{3,}";
public static String DEFAULT_PHONE = "00000000";
public static final String DEFAULT_PHONE = "00000000";
public final String value;

/**
Expand Down
Loading

0 comments on commit 1da5292

Please sign in to comment.