Skip to content

Commit

Permalink
Merge pull request #32 from Dexter-Wong/branch-add-extra-info
Browse files Browse the repository at this point in the history
Branch add extra info
  • Loading branch information
Dexter-Wong authored Mar 21, 2024
2 parents 9515c0f + 6837193 commit 07916e2
Show file tree
Hide file tree
Showing 23 changed files with 284 additions and 44 deletions.
1 change: 1 addition & 0 deletions src/main/java/seedu/address/logic/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public static String format(Person person) {
.append("; Salary: ")
.append(person.getSalary())
.append("$")
.append(person.getInfo())
.append("; Tags: ");
person.getTags().forEach(builder::append);
return builder.toString();
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
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_INFO;
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;
Expand Down Expand Up @@ -31,7 +32,8 @@ public class AddCommand extends Command {
+ PREFIX_EMAIL + "EMAIL "
+ PREFIX_ADDRESS + "ADDRESS "
+ PREFIX_INTERVIEWTIME + "INTERVIEW-TIME"
+ PREFIX_SALARY + "SALARY"
+ PREFIX_SALARY + "SALARY "
+ PREFIX_INFO + "INFO "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_COMPANY_NAME + "Google "
Expand All @@ -40,13 +42,13 @@ public class AddCommand extends Command {
+ PREFIX_EMAIL + "[email protected] "
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_INTERVIEWTIME + "121220221400"
+ PREFIX_SALARY + "Salary: 0$"
+ PREFIX_SALARY + "Salary: 0$ "
+ PREFIX_INFO + "Birthday: 12 May 2001 "
+ PREFIX_TAG + "friends "
+ PREFIX_TAG + "owesMoney";

public static final String MESSAGE_SUCCESS = "New person added: %1$s";
public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book";

private final Person toAdd;

/**
Expand Down
18 changes: 16 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,6 +4,7 @@
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_INFO;
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;
Expand All @@ -27,6 +28,7 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.Info;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
Expand All @@ -52,6 +54,7 @@ public class EditCommand extends Command {
+ "[" + PREFIX_ADDRESS + "ADDRESS] "
+ "[" + PREFIX_INTERVIEWTIME + "INTERVIEW-TIME] "
+ "[" + PREFIX_SALARY + "SALARY] "
+ "[" + PREFIX_INFO + "INFO] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " 1 "
+ PREFIX_PHONE + "91234567 "
Expand Down Expand Up @@ -110,11 +113,12 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript
Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());
InterviewTime updatedDateTime = editPersonDescriptor.getDateTime().orElse(personToEdit.getDateTime());
Salary updatedSalary = editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());
Info updatedInfo = editPersonDescriptor.getInfo().orElse(personToEdit.getInfo());
Set<Tag> updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags());

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

@Override
Expand Down Expand Up @@ -153,6 +157,7 @@ public static class EditPersonDescriptor {
private Address address;
private InterviewTime dateTime;
private Salary salary;
private Info info;
private Set<Tag> tags;

public EditPersonDescriptor() {}
Expand All @@ -169,14 +174,15 @@ public EditPersonDescriptor(EditPersonDescriptor toCopy) {
setAddress(toCopy.address);
setDateTime(toCopy.dateTime);
setSalary(toCopy.salary);
setInfo(toCopy.info);
setTags(toCopy.tags);
}

/**
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, phone, email, address, dateTime, salary, tags);
return CollectionUtil.isAnyNonNull(name, phone, email, address, dateTime, salary, info, tags);
}
public void setCompanyName(CompanyName companyName) {
this.companyName = companyName;
Expand Down Expand Up @@ -232,6 +238,12 @@ public Optional<Salary> getSalary() {
return Optional.ofNullable(salary);
}

public void setInfo(Info info) {
this.info = info; }

public Optional<Info> getInfo() {
return Optional.ofNullable(info); }

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

Expand All @@ -281,6 +294,7 @@ public String toString() {
.add("address", address)
.add("dateTime", dateTime)
.add("salary", salary)
.add("info", info)
.add("tags", tags)
.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
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_INFO;
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;
Expand All @@ -18,6 +19,7 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.Info;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
Expand All @@ -39,7 +41,8 @@ public AddCommand parse(String args) throws ParseException {
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,
PREFIX_INTERVIEWTIME, PREFIX_TAG, PREFIX_SALARY);
PREFIX_INTERVIEWTIME, PREFIX_TAG, PREFIX_SALARY, PREFIX_INFO);


if (!arePrefixesPresent(argMultimap, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_ADDRESS,
PREFIX_PHONE, PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) {
Expand All @@ -55,9 +58,10 @@ public AddCommand parse(String args) throws ParseException {
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"));
Info info = ParserUtil.parseInfo(argMultimap.getValue(PREFIX_INFO).orElse(""));
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));

Person person = new Person(companyName, name, phone, email, address, interviewTime, salary, tagList);
Person person = new Person(companyName, name, phone, email, address, interviewTime, salary, info, 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 @@ -14,5 +14,6 @@ public class CliSyntax {
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/");
public static final Prefix PREFIX_INFO = new Prefix("i/");

}
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 @@ -5,6 +5,7 @@
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_INFO;
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;
Expand Down Expand Up @@ -39,7 +40,7 @@ public EditCommand parse(String args) throws ParseException {
ArgumentTokenizer.tokenize(
args, PREFIX_COMPANY_NAME, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,
PREFIX_ADDRESS, PREFIX_INTERVIEWTIME,
PREFIX_SALARY, PREFIX_TAG);
PREFIX_SALARY, PREFIX_INFO, PREFIX_TAG);

Index index;

Expand All @@ -50,8 +51,8 @@ public EditCommand parse(String args) throws ParseException {
}

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

EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor();
if (argMultimap.getValue(PREFIX_COMPANY_NAME).isPresent()) {
Expand All @@ -77,6 +78,9 @@ public EditCommand parse(String args) throws ParseException {
if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {
editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));
}
if (argMultimap.getValue(PREFIX_INFO).isPresent()) {
editPersonDescriptor.setInfo(ParserUtil.parseInfo(argMultimap.getValue(PREFIX_INFO).get()));
}
parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);

if (!editPersonDescriptor.isAnyFieldEdited()) {
Expand Down
10 changes: 10 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,6 +12,7 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.Info;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Phone;
Expand Down Expand Up @@ -169,4 +170,13 @@ public static Salary parseSalary(String salary) throws ParseException {
}
return new Salary(trimmedSalary);
}

/**
* Parses a {@code String info} into an {@code Info}.
* Leading and trailing whitespaces will be trimmed.
*/
public static Info parseInfo(String info) {
String trimmedInfo = info.trim();
return new Info(trimmedInfo);
}
}
55 changes: 55 additions & 0 deletions src/main/java/seedu/address/model/person/Info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package seedu.address.model.person;

/**
* Represents a Person's info in the address book.
*/
public class Info {
public final String value;

/**
* Constructs a {@code Info}.
*
* @param info Information about the person in the address book
*/
public Info(String info) {
value = info;
}

public Info() {
value = "";
}

public static boolean isValidInfo(String test) {
return true;
}

public String getInfo() {
return value;
}

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

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

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

Info otherInfo = (Info) other;
return value.equals(otherInfo.value);
}

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

}
9 changes: 8 additions & 1 deletion src/main/java/seedu/address/model/person/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,17 @@ public class Person {
// Data fields
private final Address address;
private final Salary salary;
private final Info info;
private final Set<Tag> tags = new HashSet<>();
private final InterviewTime dateTime;

/**
* Every field must be present and not null.
*/

public Person(
CompanyName companyName, Name name, Phone phone, Email email, Address address,
InterviewTime dateTime, Salary salary, Set<Tag> tags) {
InterviewTime dateTime, Salary salary, Info info, Set<Tag> tags) {
requireAllNonNull(name, phone, email, address, salary, tags);
this.companyName = companyName;
this.name = name;
Expand All @@ -42,6 +44,7 @@ public Person(
this.address = address;
this.dateTime = dateTime;
this.salary = salary;
this.info = info;
this.tags.addAll(tags);
}
public CompanyName getCompanyName() {
Expand Down Expand Up @@ -69,6 +72,9 @@ public InterviewTime getDateTime() {
public Salary getSalary() {
return salary;
}
public Info getInfo() {
return info;
}

/**
* Returns an immutable tag set, which throws {@code UnsupportedOperationException}
Expand Down Expand Up @@ -131,6 +137,7 @@ public String toString() {
.add("address", address)
.add("interview-time", dateTime)
.add("salary", salary)
.add("info", info)
.add("tags", tags)
.toString();
}
Expand Down
16 changes: 10 additions & 6 deletions src/main/java/seedu/address/model/util/SampleDataUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import seedu.address.model.person.Address;
import seedu.address.model.person.CompanyName;
import seedu.address.model.person.Email;
import seedu.address.model.person.Info;
import seedu.address.model.person.InterviewTime;
import seedu.address.model.person.Name;
import seedu.address.model.person.Person;
Expand All @@ -25,25 +26,28 @@ public static Person[] getSamplePersons() {
new Person(new CompanyName("Google"), new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh"
+ "@example.com"),
new Address("Blk 30 Geylang Street 29, #06-40"),
new InterviewTime("121220221400"), new Salary("0"),
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("friends")),
new Person(new CompanyName("Google"), new Name("Bernice Yu"), new Phone("99272758"),
new Email("[email protected]"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"),
new InterviewTime("121220221400"), new Salary("0"),
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("colleagues", "friends")),
new Person(new CompanyName("Google"), new Name("Charlotte Oliveiro"), new Phone("93210283"),
new Email("[email protected]"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"),
new InterviewTime("121220221400"), new Salary("0"),
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("neighbours")),
new Person(new CompanyName("Google"), new Name("David Li"), new Phone("91031282"),
new Email("[email protected]"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"),
new InterviewTime("121220221400"), new Salary("0"), getTagSet("family")),
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("family")),
new Person(new CompanyName("Google"), new Name("Irfan Ibrahim"), new Phone("92492021"),
new Email("[email protected]"), new Address("Blk 47 Tampines Street 20, #17-35"),
new InterviewTime("121220221400"), new Salary("0"), getTagSet("classmates")),
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("classmates")),
new Person(new CompanyName("Amazon"), new Name("Roy Balakrishnan"), new Phone("92624417"),
new Email("[email protected]"), new Address("Blk 45 Aljunied Street 85, #11-31"),
new InterviewTime("121220221400"), new Salary("0"), getTagSet("colleagues"))
new InterviewTime("121220221400"), new Salary("0"), new Info("Friend of boss"),
getTagSet("colleagues"))
};
}

Expand Down
Loading

0 comments on commit 07916e2

Please sign in to comment.