Skip to content

Commit

Permalink
Merge pull request #30 from Lalelulilulela/branch-add-company-name
Browse files Browse the repository at this point in the history
Add company name feature into AddressBook
  • Loading branch information
Lalelulilulela authored Mar 20, 2024
2 parents 108382c + 98a9ee7 commit 9515c0f
Show file tree
Hide file tree
Showing 29 changed files with 386 additions and 102 deletions.
Empty file added docs/.Rhistory
Empty file.
3 changes: 3 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,6 +2,7 @@

import static java.util.Objects.requireNonNull;
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;
Expand All @@ -24,6 +25,7 @@ public class AddCommand extends Command {

public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. "
+ "Parameters: "
+ PREFIX_COMPANY_NAME + "COMPANY NAME "
+ PREFIX_NAME + "NAME "
+ PREFIX_PHONE + "PHONE "
+ PREFIX_EMAIL + "EMAIL "
Expand All @@ -32,6 +34,7 @@ public class AddCommand extends Command {
+ 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] "
Expand Down
22 changes: 19 additions & 3 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static java.util.Objects.requireNonNull;
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;
Expand All @@ -24,6 +25,7 @@
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
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;
Expand All @@ -43,6 +45,7 @@ public class EditCommand extends Command {
+ "by the index number used in the displayed person list. "
+ "Existing values will be overwritten by the input values.\n"
+ "Parameters: INDEX (must be a positive integer) "
+ "[" + PREFIX_COMPANY_NAME + "COMPANY NAME] "
+ "[" + PREFIX_NAME + "NAME] "
+ "[" + PREFIX_PHONE + "PHONE] "
+ "[" + PREFIX_EMAIL + "EMAIL] "
Expand Down Expand Up @@ -100,7 +103,7 @@ public CommandResult execute(Model model) throws CommandException {
*/
private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {
assert personToEdit != null;

CompanyName updatedCompanyName = editPersonDescriptor.getCompanyName().orElse(personToEdit.getCompanyName());
Name updatedName = editPersonDescriptor.getName().orElse(personToEdit.getName());
Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());
Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());
Expand All @@ -110,7 +113,7 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());

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

Expand Down Expand Up @@ -143,6 +146,7 @@ public String toString() {
* corresponding field value of the person.
*/
public static class EditPersonDescriptor {
private CompanyName companyName;
private Name name;
private Phone phone;
private Email email;
Expand All @@ -158,6 +162,7 @@ public EditPersonDescriptor() {}
* A defensive copy of {@code tags} is used internally.
*/
public EditPersonDescriptor(EditPersonDescriptor toCopy) {
setCompanyName(toCopy.companyName);
setName(toCopy.name);
setPhone(toCopy.phone);
setEmail(toCopy.email);
Expand All @@ -173,10 +178,17 @@ public EditPersonDescriptor(EditPersonDescriptor toCopy) {
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, phone, email, address, dateTime, salary, tags);
}
public void setCompanyName(CompanyName companyName) {
this.companyName = companyName;
}

public void setName(Name name) {
this.name = name;
}
public Optional<CompanyName> getCompanyName() {
return Optional.ofNullable(companyName);
}


public Optional<Name> getName() {
return Optional.ofNullable(name);
Expand Down Expand Up @@ -249,7 +261,8 @@ public boolean equals(Object other) {
}

EditPersonDescriptor otherEditPersonDescriptor = (EditPersonDescriptor) other;
return Objects.equals(name, otherEditPersonDescriptor.name)
return Objects.equals(companyName, otherEditPersonDescriptor.companyName)
&& Objects.equals(name, otherEditPersonDescriptor.name)
&& Objects.equals(phone, otherEditPersonDescriptor.phone)
&& Objects.equals(email, otherEditPersonDescriptor.email)
&& Objects.equals(address, otherEditPersonDescriptor.address)
Expand All @@ -261,6 +274,7 @@ public boolean equals(Object other) {
@Override
public String toString() {
return new ToStringBuilder(this)
.add("company name", companyName)
.add("name", name)
.add("phone", phone)
.add("email", email)
Expand All @@ -270,5 +284,7 @@ public String toString() {
.add("tags", tags)
.toString();
}


}
}
14 changes: 9 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,6 +2,7 @@

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_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;
Expand All @@ -15,6 +16,7 @@
import seedu.address.logic.commands.AddCommand;
import seedu.address.logic.parser.exceptions.ParseException;
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;
Expand All @@ -36,15 +38,17 @@ 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,
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,
PREFIX_INTERVIEWTIME, PREFIX_TAG, PREFIX_SALARY);

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

argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);
argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS);
CompanyName companyName = ParserUtil.parseCompanyName(argMultimap.getValue(PREFIX_COMPANY_NAME).get());
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());
Expand All @@ -53,7 +57,7 @@ public AddCommand parse(String args) throws ParseException {
Salary salary = ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).orElse("0"));
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

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

return new AddCommand(person);
}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/seedu/address/logic/parser/CliSyntax.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class CliSyntax {
public static final Prefix PREFIX_PHONE = new Prefix("p/");
public static final Prefix PREFIX_EMAIL = new Prefix("e/");
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/");
Expand Down
10 changes: 7 additions & 3 deletions src/main/java/seedu/address/logic/parser/EditCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static java.util.Objects.requireNonNull;
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_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;
Expand Down Expand Up @@ -36,7 +37,7 @@ public EditCommand parse(String args) throws ParseException {
requireNonNull(args);
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(
args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_INTERVIEWTIME,
PREFIX_SALARY, PREFIX_TAG);

Expand All @@ -49,11 +50,14 @@ public EditCommand parse(String args) throws ParseException {
}

argMultimap.verifyNoDuplicatePrefixesFor(
PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SALARY, PREFIX_ADDRESS,
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()) {
editPersonDescriptor.setCompanyName(ParserUtil.parseCompanyName(
argMultimap.getValue(PREFIX_COMPANY_NAME).get()));
}
if (argMultimap.getValue(PREFIX_NAME).isPresent()) {
editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));
}
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/seedu/address/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import seedu.address.commons.util.StringUtil;
import seedu.address.logic.parser.exceptions.ParseException;
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;
Expand Down Expand Up @@ -37,6 +38,21 @@ public static Index parseIndex(String oneBasedIndex) throws ParseException {
return Index.fromOneBased(Integer.parseInt(trimmedIndex));
}

/**
* Parses a {@code String name} into a {@code Name}.
* Leading and trailing whitespaces will be trimmed.
*
* @throws ParseException if the given {@code name} is invalid.
*/
public static CompanyName parseCompanyName(String companyName) throws ParseException {
requireNonNull(companyName);
String trimmedName = companyName.trim();
if (!CompanyName.isValidName(trimmedName)) {
throw new ParseException(Name.MESSAGE_CONSTRAINTS);
}
return new CompanyName(trimmedName);
}

/**
* Parses a {@code String name} into a {@code Name}.
* Leading and trailing whitespaces will be trimmed.
Expand Down
67 changes: 67 additions & 0 deletions src/main/java/seedu/address/model/person/CompanyName.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package seedu.address.model.person;

import static java.util.Objects.requireNonNull;
import static seedu.address.commons.util.AppUtil.checkArgument;

/**
* Represents a Company's name in the address book.
* Guarantees: immutable; is valid as declared in {@link #isValidName(String)}
*/
public class CompanyName {

public static final String MESSAGE_CONSTRAINTS =
"Company names should be less than 100 chracters, and it should not be blank";

/*
* The first character of the address must not be a whitespace,
* otherwise " " (a blank string) becomes a valid input.
*/
public static final String VALIDATION_REGEX = "[^\\s].*";

public final String companyName;

/**
* Constructs a {@code CompanyName}.
*
* @param name A valid name.
*/
public CompanyName(String name) {
requireNonNull(name);
checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);
companyName = name;
}

/**
* Returns true if a given string is a valid company name.
*/
public static boolean isValidName(String test) {
return test.length() <= 100 && test.matches(VALIDATION_REGEX);
}


@Override
public String toString() {
return companyName;
}

@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}

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

CompanyName otherName = (CompanyName) other;
return companyName.equals(otherName.companyName);
}

@Override
public int hashCode() {
return companyName.hashCode();
}

}
15 changes: 10 additions & 5 deletions src/main/java/seedu/address/model/person/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
public class Person {

// Identity fields
private final CompanyName companyName;
private final Name name;
private final Phone phone;
private final Email email;
Expand All @@ -30,11 +31,11 @@ public class Person {
/**
* Every field must be present and not null.
*/

public Person(
Name name, Phone phone, Email email, Address address,
CompanyName companyName, Name name, Phone phone, Email email, Address address,
InterviewTime dateTime, Salary salary, Set<Tag> tags) {
requireAllNonNull(name, phone, email, address, salary, tags);
this.companyName = companyName;
this.name = name;
this.phone = phone;
this.email = email;
Expand All @@ -43,7 +44,9 @@ public Person(
this.salary = salary;
this.tags.addAll(tags);
}

public CompanyName getCompanyName() {
return companyName;
}
public Name getName() {
return name;
}
Expand Down Expand Up @@ -104,7 +107,8 @@ public boolean equals(Object other) {
}

Person otherPerson = (Person) other;
return name.equals(otherPerson.name)
return companyName.equals(otherPerson.companyName)
&& name.equals(otherPerson.name)
&& phone.equals(otherPerson.phone)
&& email.equals(otherPerson.email)
&& address.equals(otherPerson.address)
Expand All @@ -114,12 +118,13 @@ public boolean equals(Object other) {
@Override
public int hashCode() {
// use this method for custom fields hashing instead of implementing your own
return Objects.hash(name, phone, email, address, tags, dateTime);
return Objects.hash(companyName, name, phone, email, address, tags, dateTime);
}

@Override
public String toString() {
return new ToStringBuilder(this)
.add("company name", companyName)
.add("name", name)
.add("phone", phone)
.add("email", email)
Expand Down
Loading

0 comments on commit 9515c0f

Please sign in to comment.