Skip to content

Commit

Permalink
Merge pull request #123 from chonguschonguschongus/branch-makePersonA…
Browse files Browse the repository at this point in the history
…bstract

Make `Person` abstract
  • Loading branch information
Mohammed-Faizzzz committed Oct 29, 2023
2 parents ab6708f + 66f360c commit 97d9816
Show file tree
Hide file tree
Showing 24 changed files with 196 additions and 1,487 deletions.
30 changes: 23 additions & 7 deletions src/main/java/seedu/address/logic/commands/RemarkCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import seedu.address.logic.Messages;
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.person.Doctor;
import seedu.address.model.person.Patient;
import seedu.address.model.person.Person;
import seedu.address.model.person.Remark;

Expand Down Expand Up @@ -59,15 +61,29 @@ public CommandResult execute(Model model) throws CommandException {
}

Person personToEdit = lastShownList.get(index.getZeroBased());
Person editedPerson = new Person(
personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),
personToEdit.getAddress(), remark, personToEdit.getGender(),
personToEdit.getIc(), personToEdit.getTags());

model.setPerson(personToEdit, editedPerson);
if (personToEdit.isDoctor()) {
Doctor editedDoctor = new Doctor(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),
personToEdit.getAddress(), remark, personToEdit.getGender(),
personToEdit.getIc(), personToEdit.getTags());
model.setPerson(personToEdit, editedDoctor);
model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);

return new CommandResult(generateSuccessMessage(editedDoctor));
}
@SuppressWarnings("unchecked") //Since Person is abstract, every Person is either a Patient or a Doctor
Patient editedPerson = (Patient) personToEdit;
Patient editedPatient = new Patient(editedPerson.getName(), editedPerson.getPhone(),
editedPerson.getEmergencyContact(), editedPerson.getEmail(), editedPerson.getAddress(),
editedPerson.getRemark(), editedPerson.getGender(), editedPerson.getIc(),
editedPerson.getCondition(), editedPerson.getBloodType(), editedPerson.getTags());

model.setPerson(personToEdit, editedPatient);
model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);

return new CommandResult(generateSuccessMessage(editedPerson));
return new CommandResult(generateSuccessMessage(editedPatient));



}

/**
Expand Down
73 changes: 0 additions & 73 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java

This file was deleted.

20 changes: 9 additions & 11 deletions src/main/java/seedu/address/model/AddressBook.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@
import seedu.address.commons.util.ToStringBuilder;
import seedu.address.model.person.Doctor;
import seedu.address.model.person.Patient;
import seedu.address.model.person.UniqueDoctorList;
import seedu.address.model.person.UniquePatientList;
import seedu.address.model.person.UniquePersonList;

/**
* Wraps all data at the address-book level
* Duplicates are not allowed (by .isSamePerson comparison)
*/
public class AddressBook implements ReadOnlyAddressBook {
private final UniqueDoctorList doctors;
private final UniquePatientList patients;
private final UniquePersonList<Doctor> doctors;
private final UniquePersonList<Patient> patients;

/*
* The 'unusual' code block below is a non-static initialization block, sometimes used to avoid duplication
Expand All @@ -27,8 +26,8 @@ public class AddressBook implements ReadOnlyAddressBook {
* among constructors.
*/
{
doctors = new UniqueDoctorList();
patients = new UniquePatientList();
doctors = new UniquePersonList();
patients = new UniquePersonList();
}

public AddressBook() {
Expand All @@ -49,15 +48,15 @@ public AddressBook(ReadOnlyAddressBook toBeCopied) {
* {@code patients} must not contain duplicate patients.
*/
public void setPatients(List<Patient> patients) {
this.patients.setPatients(patients);
this.patients.setPersons(patients);
}

/**
* Replaces the contents of the doctors list with {@code doctors}.
* {@code doctors} must not contain duplicate persons.
*/
public void setDoctors(List<Doctor> doctors) {
this.doctors.setDoctors(doctors);
this.doctors.setPersons(doctors);
}

/**
Expand Down Expand Up @@ -115,7 +114,7 @@ public void addDoctor(Doctor d) {
public void setPatient(Patient target, Patient editedPerson) {
requireNonNull(editedPerson);

patients.setPatient(target, editedPerson);
patients.setPerson(target, editedPerson);
}

/**
Expand All @@ -126,7 +125,7 @@ public void setPatient(Patient target, Patient editedPerson) {
public void setDoctor(Doctor target, Doctor editedDoctor) {
requireNonNull(editedDoctor);

doctors.setDoctor(target, editedDoctor);
doctors.setPerson(target, editedDoctor);
}

/**
Expand Down Expand Up @@ -163,7 +162,6 @@ public ObservableList<Patient> getPatientList() {
return patients.asUnmodifiableObservableList();
}

@Override
public ObservableList<Doctor> getDoctorList() {
return doctors.asUnmodifiableObservableList();
}
Expand Down
49 changes: 1 addition & 48 deletions src/main/java/seedu/address/model/person/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,15 @@

import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

import seedu.address.commons.util.ToStringBuilder;
import seedu.address.model.tag.Tag;

/**
* Represents a Person in the address book.
* Guarantees: details are present and not null, field values are validated, immutable.
*/
public class Person {
public abstract class Person {

// Identity fields
protected final Name name;
Expand Down Expand Up @@ -107,49 +105,4 @@ public boolean isDoctor() {
return false;
}

/**
* Returns true if both persons have the same identity and data fields.
* This defines a stronger notion of equality between two persons.
*/
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}

// instanceof handles nulls
if (!(other instanceof Person)) {
return false;
}

Person otherPerson = (Person) other;
return name.equals(otherPerson.name)
&& phone.equals(otherPerson.phone)
&& email.equals(otherPerson.email)
&& address.equals(otherPerson.address)
&& gender.equals(otherPerson.gender)
&& ic.equals(otherPerson.ic)
&& tags.equals(otherPerson.tags);
}

@Override
public int hashCode() {
// use this method for custom fields hashing instead of implementing your own
return Objects.hash(name, phone, email, address, gender, ic, tags);
}

@Override
public String toString() {
return new ToStringBuilder(this)
.add("name", name)
.add("phone", phone)
.add("email", email)
.add("address", address)
.add("remark", remark)
.add("gender", gender)
.add("nric", ic)
.add("tags", tags)
.toString();
}

}
Loading

0 comments on commit 97d9816

Please sign in to comment.