Skip to content

Commit

Permalink
Merge branch 'master' into branch-add-company-name
Browse files Browse the repository at this point in the history
  • Loading branch information
dabzpengu authored Mar 20, 2024
2 parents 328ecff + 108382c commit d9ab8aa
Show file tree
Hide file tree
Showing 30 changed files with 789 additions and 104 deletions.
5 changes: 5 additions & 0 deletions src/main/java/seedu/address/logic/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ public static String format(Person person) {
.append(person.getEmail())
.append("; Address: ")
.append(person.getAddress())
.append("; Interview Date and Time: ")
.append(person.getDateTime())
.append("; Salary: ")
.append(person.getSalary())
.append("$")
.append("; Tags: ");
person.getTags().forEach(builder::append);
return builder.toString();
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEWTIME;
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_SALARY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import seedu.address.commons.util.ToStringBuilder;
Expand All @@ -28,13 +30,17 @@ public class AddCommand extends Command {
+ PREFIX_PHONE + "PHONE "
+ PREFIX_EMAIL + "EMAIL "
+ PREFIX_ADDRESS + "ADDRESS "
+ PREFIX_INTERVIEWTIME + "INTERVIEW-TIME"
+ PREFIX_SALARY + "SALARY"
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_COMPANY_NAME + "Google "
+ PREFIX_NAME + "John Doe "
+ PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "[email protected] "
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_INTERVIEWTIME + "121220221400"
+ PREFIX_SALARY + "Salary: 0$"
+ PREFIX_TAG + "friends "
+ PREFIX_TAG + "owesMoney";

Expand Down
36 changes: 34 additions & 2 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEWTIME;
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_SALARY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;

Expand All @@ -25,9 +27,11 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Salary;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -46,6 +50,8 @@ public class EditCommand extends Command {
+ "[" + PREFIX_PHONE + "PHONE] "
+ "[" + PREFIX_EMAIL + "EMAIL] "
+ "[" + PREFIX_ADDRESS + "ADDRESS] "
+ "[" + PREFIX_INTERVIEWTIME + "INTERVIEW-TIME] "
+ "[" + PREFIX_SALARY + "SALARY] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " 1 "
+ PREFIX_PHONE + "91234567 "
Expand Down Expand Up @@ -102,9 +108,13 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
InterviewTime updatedDateTime = editPersonDescriptor.getDateTime().orElse(personToEdit.getDateTime());
Salary updatedSalary = editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());

return new Person(updatedCompanyName, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);
return new Person(
updatedCompanyName, updatedName, updatedPhone, updatedEmail,
updatedAddress, updatedDateTime, updatedSalary, updatedTags);
}

@Override
Expand Down Expand Up @@ -141,6 +151,8 @@ public static class EditPersonDescriptor {
private Phone phone;
private Email email;
private Address address;
private InterviewTime dateTime;
private Salary salary;
private Set<Tag> tags;

public EditPersonDescriptor() {}
Expand All @@ -155,14 +167,16 @@ public EditPersonDescriptor(EditPersonDescriptor toCopy) {
setPhone(toCopy.phone);
setEmail(toCopy.email);
setAddress(toCopy.address);
setDateTime(toCopy.dateTime);
setSalary(toCopy.salary);
setTags(toCopy.tags);
}

/**
* 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, address, dateTime, salary, tags);
}
public void setCompanyName(CompanyName companyName) {
this.companyName = companyName;
Expand Down Expand Up @@ -199,11 +213,25 @@ public Optional<Email> getEmail() {
public void setAddress(Address address) {
this.address = address;
}
public void setDateTime(InterviewTime dateTime) {
this.dateTime = dateTime;
}
public Optional<InterviewTime> getDateTime() {
return Optional.ofNullable(dateTime);
}

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

public void setSalary(Salary salary) {
this.salary = salary;
}

public Optional<Salary> getSalary() {
return Optional.ofNullable(salary);
}

/**
* Sets {@code tags} to this object's {@code tags}.
* A defensive copy of {@code tags} is used internally.
Expand Down Expand Up @@ -238,6 +266,8 @@ public boolean equals(Object other) {
&& Objects.equals(phone, otherEditPersonDescriptor.phone)
&& Objects.equals(email, otherEditPersonDescriptor.email)
&& Objects.equals(address, otherEditPersonDescriptor.address)
&& Objects.equals(dateTime, otherEditPersonDescriptor.dateTime)
&& Objects.equals(salary, otherEditPersonDescriptor.salary)
&& Objects.equals(tags, otherEditPersonDescriptor.tags);
}

Expand All @@ -249,6 +279,8 @@ public String toString() {
.add("phone", phone)
.add("email", email)
.add("address", address)
.add("dateTime", dateTime)
.add("salary", salary)
.add("tags", tags)
.toString();
}
Expand Down
13 changes: 10 additions & 3 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEWTIME;
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_SALARY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import java.util.Set;
Expand All @@ -16,9 +18,11 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Salary;
import seedu.address.model.tag.Tag;

/**
Expand All @@ -33,8 +37,9 @@ public class AddCommandParser implements Parser<AddCommand> {
*/
public AddCommand parse(String args) throws ParseException {
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_TAG);
ArgumentTokenizer.tokenize(
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,
PREFIX_INTERVIEWTIME, PREFIX_TAG, PREFIX_SALARY);

if (!arePrefixesPresent(argMultimap, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_ADDRESS,
PREFIX_PHONE, PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) {
Expand All @@ -48,9 +53,11 @@ public AddCommand parse(String args) throws ParseException {
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());
InterviewTime interviewTime = ParserUtil.parseInterviewTime(argMultimap.getValue(PREFIX_INTERVIEWTIME).get());
Salary salary = ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).orElse("0"));
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

Person person = new Person(companyName, name, phone, email, address, tagList);
Person person = new Person(companyName, name, phone, email, address, interviewTime, salary, tagList);

return new AddCommand(person);
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/seedu/address/logic/parser/CliSyntax.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,7 @@ public class CliSyntax {
public static final Prefix PREFIX_ADDRESS = new Prefix("a/");
public static final Prefix PREFIX_COMPANY_NAME = new Prefix("cn/");
public static final Prefix PREFIX_TAG = new Prefix("t/");
public static final Prefix PREFIX_INTERVIEWTIME = new Prefix("tt/");
public static final Prefix PREFIX_SALARY = new Prefix("s/");

}
23 changes: 17 additions & 6 deletions src/main/java/seedu/address/logic/parser/EditCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEWTIME;
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_SALARY;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;

import java.util.Collection;
Expand All @@ -28,13 +30,16 @@ public class EditCommandParser implements Parser<EditCommand> {
/**
* Parses the given {@code String} of arguments in the context of the EditCommand
* and returns an EditCommand object for execution.
*
* @throws ParseException if the user input does not conform the expected format
*/
public EditCommand parse(String args) throws ParseException {
requireNonNull(args);
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_TAG);
ArgumentTokenizer.tokenize(
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_INTERVIEWTIME,
PREFIX_SALARY, PREFIX_TAG);

Index index;

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

argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS);
argMultimap.verifyNoDuplicatePrefixesFor(
PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SALARY, PREFIX_ADDRESS,
PREFIX_INTERVIEWTIME);

EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor();
if (argMultimap.getValue(PREFIX_COMPANY_NAME).isPresent()) {
Expand All @@ -64,6 +70,13 @@ public EditCommand parse(String args) throws ParseException {
if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {
editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));
}
if (argMultimap.getValue(PREFIX_INTERVIEWTIME).isPresent()) {
editPersonDescriptor.setDateTime(
ParserUtil.parseInterviewTime(argMultimap.getValue(PREFIX_INTERVIEWTIME).get()));
}
if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {
editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));
}
parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);

if (!editPersonDescriptor.isAnyFieldEdited()) {
Expand All @@ -72,7 +85,6 @@ public EditCommand parse(String args) throws ParseException {

return new EditCommand(index, editPersonDescriptor);
}

/**
* Parses {@code Collection<String> tags} into a {@code Set<Tag>} if {@code tags} is non-empty.
* If {@code tags} contain only one element which is an empty string, it will be parsed into a
Expand All @@ -87,5 +99,4 @@ private Optional<Set<Tag>> parseTagsForEdit(Collection<String> tags) throws Pars
Collection<String> tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags;
return Optional.of(ParserUtil.parseTags(tagSet));
}

}
32 changes: 32 additions & 0 deletions src/main/java/seedu/address/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Phone;
import seedu.address.model.person.Salary;
import seedu.address.model.tag.Tag;

/**
Expand Down Expand Up @@ -126,6 +128,21 @@ public static Tag parseTag(String tag) throws ParseException {
return new Tag(trimmedTag);
}

/**
* Reads the input for interview-time tag
* @param dateTime given
* @return trimmed output to be stored
* @throws ParseException if invalid format
*/
public static InterviewTime parseInterviewTime(String dateTime) throws ParseException {
requireNonNull(dateTime);
String trimmedDateTime = dateTime.trim();
if (!InterviewTime.isValidInterviewTime(trimmedDateTime)) {
throw new ParseException(InterviewTime.MESSAGE_CONSTRAINTS);
}
return new InterviewTime(trimmedDateTime);
}

/**
* Parses {@code Collection<String> tags} into a {@code Set<Tag>}.
*/
Expand All @@ -137,4 +154,19 @@ public static Set<Tag> parseTags(Collection<String> tags) throws ParseException
}
return tagSet;
}

/**
* Parses a {@code String salary} into an {@code Salary}.
* Leading and trailing whitespaces will be trimmed.
*
* @throws ParseException if the given {@code salary} is invalid.
*/
public static Salary parseSalary(String salary) throws ParseException {
requireNonNull(salary);
String trimmedSalary = salary.trim();
if (!Salary.isValidSalary(trimmedSalary)) {
throw new ParseException(Salary.MESSAGE_CONSTRAINTS);
}
return new Salary(trimmedSalary);
}
}
Loading

0 comments on commit d9ab8aa

Please sign in to comment.