Skip to content

Commit

Permalink
Merge pull request #57 from timothywongej/branch-update-person
Browse files Browse the repository at this point in the history
Update Person data fields
  • Loading branch information
noobmaster19 authored Oct 15, 2021
2 parents 872b048 + 31cfe08 commit af1fbc8
Show file tree
Hide file tree
Showing 46 changed files with 1,404 additions and 1,069 deletions.
15 changes: 6 additions & 9 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package seedu.address.logic.commands;

import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FACULTY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FRAMEWORK;
import static seedu.address.logic.parser.CliSyntax.PREFIX_LANGUAGE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;
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_ROLE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import seedu.address.logic.commands.exceptions.CommandException;
Expand All @@ -24,19 +24,16 @@ public class AddCommand extends Command {
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. "
+ "Parameters: "
+ PREFIX_NAME + "NAME "
+ PREFIX_PHONE + "PHONE "
+ PREFIX_EMAIL + "EMAIL "
+ PREFIX_ADDRESS + "ADDRESS "
+ PREFIX_ROLE + "ROLE "
+ PREFIX_FACULTY + "FACULTY "
+ PREFIX_MAJOR + "MAJOR "
+ "[" + PREFIX_SKILL + "SKILL] "
+ "[" + PREFIX_LANGUAGE + "LANGUAGE] "
+ "[" + PREFIX_FRAMEWORK + "FRAMEWORK] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_NAME + "John Doe "
+ PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "[email protected] "
+ PREFIX_ADDRESS + "Raffles Hall "
+ PREFIX_ROLE + "student "
+ PREFIX_FACULTY + "computing "
+ PREFIX_MAJOR + "computer science "
+ PREFIX_TAG + "friends "
Expand Down
126 changes: 76 additions & 50 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FACULTY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FRAMEWORK;
import static seedu.address.logic.parser.CliSyntax.PREFIX_LANGUAGE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;
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_ROLE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;

Expand All @@ -21,18 +22,18 @@
import seedu.address.commons.util.CollectionUtil;
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.person.Address;
import seedu.address.model.person.Email;
import seedu.address.model.person.Faculty;
import seedu.address.model.person.Major;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Role;
import seedu.address.model.skill.Framework;
import seedu.address.model.skill.Language;
import seedu.address.model.skill.Skill;
import seedu.address.model.tag.Tag;

/**
* Edits the details of an existing person in the address book.
* Edits the details of an existing person in ComputingConnection.
*/
public class EditCommand extends Command {

Expand All @@ -43,14 +44,14 @@ public class EditCommand extends Command {
+ "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_ROLE + "EMAIL] "
+ "[" + PREFIX_FACULTY + "PHONE] "
+ "[" + PREFIX_MAJOR + "PHONE] "
+ "[" + PREFIX_FACULTY + "FACULTY] "
+ "[" + PREFIX_MAJOR + "MAJOR] "
+ "[" + PREFIX_SKILL + "SKILL] "
+ "[" + PREFIX_LANGUAGE + "LANGUAGE] "
+ "[" + PREFIX_FRAMEWORK + "FRAMEWORK] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " 1 "
+ PREFIX_PHONE + "91234567 "
+ PREFIX_EMAIL + "[email protected]";

public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Person: %1$s";
Expand Down Expand Up @@ -101,16 +102,16 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
assert personToEdit != null;

Name updatedName = editPersonDescriptor.getName().orElse(personToEdit.getName());
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
Role updatedRole = editPersonDescriptor.getRole().orElse(personToEdit.getRole());
Faculty updatedFaculty = editPersonDescriptor.getFaculty().orElse(personToEdit.getFaculty());
Major updatedMajor = editPersonDescriptor.getMajor().orElse(personToEdit.getMajor());
Set<Skill> updatedSkills = editPersonDescriptor.getSkills().orElse(personToEdit.getSkills());
Set<Language> updatedLanguages = editPersonDescriptor.getLanguages().orElse(personToEdit.getLanguages());
Set<Framework> updatedFrameworks = editPersonDescriptor.getFrameworks().orElse(personToEdit.getFrameworks());
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());

return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,
updatedRole, updatedFaculty, updatedMajor, updatedTags);
return new Person(updatedName, updatedEmail, updatedFaculty, updatedMajor,
updatedSkills, updatedLanguages, updatedFrameworks, updatedTags);
}

@Override
Expand All @@ -137,12 +138,12 @@ public boolean equals(Object other) {
*/
public static class EditPersonDescriptor {
private Name name;
private Phone phone;
private Email email;
private Address address;
private Role role;
private Faculty faculty;
private Major major;
private Set<Skill> skills;
private Set<Language> languages;
private Set<Framework> frameworks;
private Set<Tag> tags;

public EditPersonDescriptor() {}
Expand All @@ -153,20 +154,20 @@ public EditPersonDescriptor() {}
*/
public EditPersonDescriptor(EditPersonDescriptor toCopy) {
setName(toCopy.name);
setPhone(toCopy.phone);
setEmail(toCopy.email);
setAddress(toCopy.address);
setFaculty(toCopy.faculty);
setMajor(toCopy.major);
setRole(toCopy.role);
setSkills(toCopy.skills);
setLanguages(toCopy.languages);
setFrameworks(toCopy.frameworks);
setTags(toCopy.tags);
}

/**
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, phone, email, address, role, faculty, major, tags);
return CollectionUtil.isAnyNonNull(name, email, faculty, major, skills, languages, frameworks, tags);
}

public void setName(Name name) {
Expand All @@ -177,14 +178,6 @@ public Optional<Name> getName() {
return Optional.ofNullable(name);
}

public void setPhone(Phone phone) {
this.phone = phone;
}

public Optional<Phone> getPhone() {
return Optional.ofNullable(phone);
}

public void setEmail(Email email) {
this.email = email;
}
Expand All @@ -193,20 +186,12 @@ public Optional<Email> getEmail() {
return Optional.ofNullable(email);
}

public void setAddress(Address address) {
this.address = address;
}

public Optional<Address> getAddress() {
return Optional.ofNullable(address);
}

public void setRole(Role role) {
this.role = role;
public void setFaculty(Faculty faculty) {
this.faculty = faculty;
}

public Optional<Role> getRole() {
return Optional.ofNullable(role);
public Optional<Faculty> getFaculty() {
return Optional.ofNullable(faculty);
}

public void setMajor(Major major) {
Expand All @@ -217,13 +202,57 @@ public Optional<Major> getMajor() {
return Optional.ofNullable(major);
}

public void setFaculty(Faculty faculty) {
this.faculty = faculty;
/**
* Sets {@code skill} to this object's {@code skills}.
* A defensive copy of {@code skills} is used internally.
*/
public void setSkills(Set<Skill> skills) {
this.skills = (skills != null) ? new HashSet<>(skills) : null;
}

public Optional<Faculty> getFaculty() {
return Optional.ofNullable(faculty);
/**
* Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}
* if modification is attempted.
* Returns {@code Optional#empty()} if {@code skills} is null.
*/
public Optional<Set<Skill>> getSkills() {
return (skills != null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();
}

/**
* Sets {@code language} to this object's {@code languages}.
* A defensive copy of {@code languages} is used internally.
*/
public void setLanguages(Set<Language> languages) {
this.languages = (languages != null) ? new HashSet<>(languages) : null;
}

/**
* Returns an unmodifiable language set, which throws {@code UnsupportedOperationException}
* if modification is attempted.
* Returns {@code Optional#empty()} if {@code languages} is null.
*/
public Optional<Set<Language>> getLanguages() {
return (languages != null) ? Optional.of(Collections.unmodifiableSet(languages)) : Optional.empty();
}

/**
* Sets {@code framework} to this object's {@code frameworks}.
* A defensive copy of {@code frameworks} is used internally.
*/
public void setFrameworks(Set<Framework> frameworks) {
this.frameworks = (frameworks != null) ? new HashSet<>(frameworks) : null;
}

/**
* Returns an unmodifiable framework set, which throws {@code UnsupportedOperationException}
* if modification is attempted.
* Returns {@code Optional#empty()} if {@code frameworks} is null.
*/
public Optional<Set<Framework>> getFrameworks() {
return (frameworks != null) ? Optional.of(Collections.unmodifiableSet(frameworks)) : Optional.empty();
}

/**
* Sets {@code tags} to this object's {@code tags}.
* A defensive copy of {@code tags} is used internally.
Expand Down Expand Up @@ -257,10 +286,7 @@ public boolean equals(Object other) {
EditPersonDescriptor e = (EditPersonDescriptor) other;

return getName().equals(e.getName())
&& getPhone().equals(e.getPhone())
&& getEmail().equals(e.getEmail())
&& getAddress().equals(e.getAddress())
&& getRole().equals(e.getRole())
&& getFaculty().equals(e.getFaculty())
&& getMajor().equals(e.getMajor())
&& getTags().equals(e.getTags());
Expand Down
12 changes: 2 additions & 10 deletions src/main/java/seedu/address/logic/commands/FilterCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,18 @@
import static java.util.Objects.requireNonNull;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FACULTY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import seedu.address.commons.core.Messages;
import seedu.address.logic.parser.ArgumentMultimap;
import seedu.address.model.Model;
import seedu.address.model.person.ContactHasFacultyPredicate;
import seedu.address.model.person.ContactHasMajorPredicate;
import seedu.address.model.person.ContactHasRolePredicate;
import seedu.address.model.person.ContactHasTagPredicate;


/**
* Finds and lists all persons in address book which have the specified tags attached to them.
* Finds and lists all persons in ComputingConnection which have the specified tags attached to them.
* tag matching is case insensitive.
*/
public class FilterCommand extends Command {
Expand All @@ -29,7 +27,6 @@ public class FilterCommand extends Command {
+ "Example: " + COMMAND_WORD + " r/staff f/computing";

private ContactHasTagPredicate tagPredicate;
private ContactHasRolePredicate rolePredicate;
private ContactHasFacultyPredicate facultyPredicate;
private ContactHasMajorPredicate majorPredicate;
private final ArgumentMultimap argMultimap;
Expand All @@ -41,10 +38,6 @@ public FilterCommand(ArgumentMultimap argMultimap) {
@Override
public CommandResult execute(Model model) {
requireNonNull(model);
if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {
rolePredicate = new ContactHasRolePredicate(argMultimap.getAllValues(PREFIX_ROLE));
model.updateFilteredPersonList(rolePredicate);
}
//System.out.println(model.getFilteredPersonList());
if (argMultimap.getValue(PREFIX_FACULTY).isPresent()) {
facultyPredicate = new ContactHasFacultyPredicate(argMultimap.getAllValues(PREFIX_FACULTY));
Expand All @@ -70,8 +63,7 @@ public boolean equals(Object other) {
|| (other instanceof FilterCommand // instanceof handles nulls
&& tagPredicate.equals(((FilterCommand) other).tagPredicate)
&& facultyPredicate.equals(((FilterCommand) other).facultyPredicate)
&& majorPredicate.equals(((FilterCommand) other).majorPredicate)
&& rolePredicate.equals(((FilterCommand) other).rolePredicate)); // state check
&& majorPredicate.equals(((FilterCommand) other).majorPredicate));
}

}
27 changes: 13 additions & 14 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
package seedu.address.logic.parser;

import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FACULTY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_FRAMEWORK;
import static seedu.address.logic.parser.CliSyntax.PREFIX_LANGUAGE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;
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_ROLE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import java.util.Set;
import java.util.stream.Stream;

import seedu.address.logic.commands.AddCommand;
import seedu.address.logic.parser.exceptions.ParseException;
import seedu.address.model.person.Address;
import seedu.address.model.person.Email;
import seedu.address.model.person.Faculty;
import seedu.address.model.person.Major;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Role;
import seedu.address.model.skill.Framework;
import seedu.address.model.skill.Language;
import seedu.address.model.skill.Skill;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -37,25 +37,24 @@ public class AddCommandParser implements Parser<AddCommand> {
*/
public AddCommand parse(String args) throws ParseException {
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_ROLE,
PREFIX_FACULTY, PREFIX_MAJOR, PREFIX_TAG);
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_EMAIL, PREFIX_FACULTY, PREFIX_MAJOR,
PREFIX_SKILL, PREFIX_LANGUAGE, PREFIX_FRAMEWORK, PREFIX_TAG);

if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ROLE,
PREFIX_FACULTY, PREFIX_MAJOR)
if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_EMAIL, PREFIX_FACULTY, PREFIX_MAJOR)
|| !argMultimap.getPreamble().isEmpty()) {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));
}

Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());
Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
Role role = ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get());
Faculty faculty = ParserUtil.parseFaculty(argMultimap.getValue(PREFIX_FACULTY).get());
Major major = ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get());
Set<Skill> skillList = ParserUtil.parseSkills(argMultimap.getAllValues(PREFIX_SKILL));
Set<Language> languageList = ParserUtil.parseLanguages(argMultimap.getAllValues(PREFIX_LANGUAGE));
Set<Framework> frameworkList = ParserUtil.parseFrameworks(argMultimap.getAllValues(PREFIX_FRAMEWORK));
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

Person person = new Person(name, phone, email, address, role, faculty, major, tagList);
Person person = new Person(name, email, faculty, major, skillList, languageList, frameworkList, tagList);

return new AddCommand(person);
}
Expand Down
Loading

0 comments on commit af1fbc8

Please sign in to comment.