Skip to content

Commit

Permalink
Merge pull request #50 from StopTakingAllTheNames/v1.2
Browse files Browse the repository at this point in the history
Resolves #45: Implements (simplified) Student Class
  • Loading branch information
AlexCQY committed Oct 6, 2020
2 parents bd4a9c2 + 59fcfd0 commit e6533c6
Show file tree
Hide file tree
Showing 44 changed files with 444 additions and 799 deletions.
8 changes: 6 additions & 2 deletions src/main/java/seedu/address/MainApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@
import seedu.address.commons.util.StringUtil;
import seedu.address.logic.Logic;
import seedu.address.logic.LogicManager;
import seedu.address.model.*;
import seedu.address.model.Model;
import seedu.address.model.ModelManager;
import seedu.address.model.ReadOnlyReeve;
import seedu.address.model.ReadOnlyUserPrefs;
import seedu.address.model.Reeve;
import seedu.address.model.UserPrefs;
import seedu.address.model.util.SampleDataUtil;
import seedu.address.storage.ReeveStorage;
import seedu.address.storage.JsonReeveStorage;
import seedu.address.storage.JsonUserPrefsStorage;
import seedu.address.storage.ReeveStorage;
import seedu.address.storage.Storage;
import seedu.address.storage.StorageManager;
import seedu.address.storage.UserPrefsStorage;
Expand Down
16 changes: 6 additions & 10 deletions src/main/java/seedu/address/logic/commands/AddCommand.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
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_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHOOL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;

import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
Expand All @@ -22,16 +21,13 @@ public class AddCommand extends Command {
+ "Parameters: "
+ PREFIX_NAME + "NAME "
+ PREFIX_PHONE + "PHONE "
+ PREFIX_EMAIL + "EMAIL "
+ PREFIX_ADDRESS + "ADDRESS "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ PREFIX_SCHOOL + "SCHOOL "
+ PREFIX_YEAR + "YEAR\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_NAME + "John Doe "
+ PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "johnd@example.com "
+ PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
+ PREFIX_TAG + "friends "
+ PREFIX_TAG + "owesMoney";
+ PREFIX_SCHOOL + "NUS High School "
+ PREFIX_YEAR + "5";

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";
Expand Down
106 changes: 6 additions & 100 deletions src/main/java/seedu/address/logic/commands/EditCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,25 @@

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_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;

import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;

import seedu.address.commons.core.Messages;
import seedu.address.commons.core.index.Index;
import seedu.address.commons.util.CollectionUtil;
import seedu.address.logic.commands.exceptions.CommandException;
import seedu.address.model.Model;
import seedu.address.model.admin.AdditionalDetails;
import seedu.address.model.admin.ClassTime;
import seedu.address.model.admin.ClassVenue;
import seedu.address.model.student.Name;
import seedu.address.model.student.Phone;
import seedu.address.model.student.School;
import seedu.address.model.student.Student;
import seedu.address.model.student.Year;
import seedu.address.model.tag.Tag;
import seedu.address.model.student.admin.Admin;

/**
* Edits the details of an existing person in the address book.
Expand All @@ -42,12 +35,10 @@ public class EditCommand extends Command {
+ "Parameters: INDEX (must be a positive integer) "
+ "[" + PREFIX_NAME + "NAME] "
+ "[" + PREFIX_PHONE + "PHONE] "
+ "[" + PREFIX_EMAIL + "EMAIL] "
+ "[" + PREFIX_ADDRESS + "ADDRESS] "
+ "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " 1 "
+ PREFIX_PHONE + "91234567 "
+ PREFIX_EMAIL + "johndoe@example.com";
+ PREFIX_PHONE + "91234567 ";

public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Person: %1$s";
public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided.";
Expand Down Expand Up @@ -100,18 +91,8 @@ private static Student createEditedPerson(Student studentToEdit, EditStudentDesc
Phone updatedPhone = editStudentDescriptor.getPhone().orElse(studentToEdit.getPhone());
School updatedSchool = editStudentDescriptor.getSchool().orElse(studentToEdit.getSchool());
Year updatedYear = editStudentDescriptor.getYear().orElse(studentToEdit.getYear());
ClassVenue updatedClassVenue = editStudentDescriptor.getClassVenue().orElse(studentToEdit.getClassVenue());
ClassTime updatedClassTime = editStudentDescriptor.getClassTime().orElse(studentToEdit.getClassTime());
AdditionalDetails updatedAdditionalDetails =
editStudentDescriptor.getAdditionalDetails().orElse(studentToEdit.getAdditionalDetails());
MeetingLink updatedMeetingLink = editStudentDescriptor.getMeetingLink().orElse(studentToEdit.getMeetingLink());
Subject updatedSubject = editStudentDescriptor.getSubject().orElse(studentToEdit.getSubject());
Set<Tag> updatedTags = editStudentDescriptor.getTags().orElse(studentToEdit.getTags());

return new Student(updatedName, updatedPhone, updatedSchool, updatedYear,
updatedClassVenue,
updatedClassTime, updatedAdditionalDetails, updatedMeetingLink,
updatedSubject, updatedTags);

return new Student(updatedName, updatedPhone, updatedSchool, updatedYear, new Admin());
}

@Override
Expand Down Expand Up @@ -141,12 +122,6 @@ public static class EditStudentDescriptor {
private Phone phone;
private School school;
private Year year;
private ClassVenue classVenue;
private ClassTime classTime;
private AdditionalDetails additionalDetails;
private MeetingLink meetingLink;
private Subject subject;
private Set<Tag> tags;

public EditStudentDescriptor() {}

Expand All @@ -159,19 +134,13 @@ public EditStudentDescriptor(EditStudentDescriptor toCopy) {
setPhone(toCopy.phone);
setSchool(toCopy.school);
setYear(toCopy.year);
setClassVenue(toCopy.classVenue);
setClassTime(toCopy.classTime);
setAdditionalDetails(toCopy.additionalDetails);
setMeetingLink(toCopy.meetingLink);
setSubject(toCopy.subject);
setTags(toCopy.tags);
}

/**
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, phone, meetingLink, classVenue, tags);
return CollectionUtil.isAnyNonNull(name, phone, school, year);
}

public void setName(Name name) {
Expand Down Expand Up @@ -206,63 +175,6 @@ public Optional<Year> getYear() {
return Optional.ofNullable(year);
}

public void setClassVenue(ClassVenue classVenue) {
this.classVenue = classVenue;
}

public Optional<ClassVenue> getClassVenue() {
return Optional.ofNullable(classVenue);
}

public void setClassTime(ClassTime classTime) {
this.classTime = classTime;
}

public Optional<ClassTime> getClassTime() {
return Optional.ofNullable(classTime);
}

public void setAdditionalDetails(AdditionalDetails additionalDetails) {
this.additionalDetails = additionalDetails;
}

public Optional<AdditionalDetails> getAdditionalDetails() {
return Optional.ofNullable(additionalDetails);
}

public void setSubject(Subject subject) {
this.subject = subject;
}

public Optional<Subject> getSubject() {
return Optional.ofNullable(subject);
}

public void setMeetingLink(MeetingLink meetingLink) {
this.meetingLink = meetingLink;
}

public Optional<MeetingLink> getMeetingLink() {
return Optional.ofNullable(meetingLink);
}

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

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

@Override
public boolean equals(Object other) {
// short circuit if same object
Expand All @@ -281,13 +193,7 @@ public boolean equals(Object other) {
return getName().equals(e.getName())
&& getPhone().equals(e.getPhone())
&& getSchool().equals(e.getSchool())
&& getYear().equals(e.getYear())
&& getClassVenue().equals(e.getClassVenue())
&& getClassTime().equals(e.getClassTime())
&& getAdditionalDetails().equals(e.getAdditionalDetails())
&& getMeetingLink().equals(e.getMeetingLink())
&& getSubject().equals(e.getSubject())
&& getTags().equals(e.getTags());
&& getYear().equals(e.getYear());
}
}
}
24 changes: 11 additions & 13 deletions src/main/java/seedu/address/logic/parser/AddCommandParser.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
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.COMPULSORY_PREFIXES;
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_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHOOL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;

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.admin.ClassVenue;
import seedu.address.model.student.Name;
import seedu.address.model.student.Phone;
import seedu.address.model.student.School;
import seedu.address.model.student.Student;
import seedu.address.model.tag.Tag;
import seedu.address.model.student.Year;
import seedu.address.model.student.admin.Admin;

/**
* Parses input arguments and creates a new AddCommand object
Expand All @@ -30,21 +30,19 @@ 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_TAG);
ArgumentTokenizer.tokenize(args, COMPULSORY_PREFIXES);

if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)
if (!arePrefixesPresent(argMultimap, COMPULSORY_PREFIXES)
|| !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());
MeetingLink meetingLink = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
ClassVenue classVenue = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));
School school = ParserUtil.parseSchool(argMultimap.getValue(PREFIX_SCHOOL).get());
Year year = ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get());

Student student = new Student(name, phone, null, null, null, null,
null, meetingLink, null, tagList);
Student student = new Student(name, phone, school, year, new Admin());

return new AddCommand(student);
}
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/seedu/address/logic/parser/CliSyntax.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ public class CliSyntax {
/* Prefix definitions */
public static final Prefix PREFIX_NAME = new Prefix("n/");
public static final Prefix PREFIX_PHONE = new Prefix("p/");
public static final Prefix PREFIX_EMAIL = new Prefix("e/");
public static final Prefix PREFIX_SCHOOL = new Prefix("s/");
public static final Prefix PREFIX_YEAR = new Prefix("y/");
public static final Prefix PREFIX_ADDRESS = new Prefix("a/");
public static final Prefix PREFIX_TAG = new Prefix("t/");

public static final Prefix[] COMPULSORY_PREFIXES = new Prefix[] {PREFIX_NAME, PREFIX_PHONE,
PREFIX_SCHOOL, PREFIX_YEAR};

}
17 changes: 8 additions & 9 deletions src/main/java/seedu/address/logic/parser/EditCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import static java.util.Objects.requireNonNull;
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.COMPULSORY_PREFIXES;
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_TAG;
import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHOOL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;

import java.util.Collection;
import java.util.Collections;
Expand All @@ -32,7 +32,7 @@ public class EditCommandParser implements Parser<EditCommand> {
public EditCommand parse(String args) throws ParseException {
requireNonNull(args);
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);
ArgumentTokenizer.tokenize(args, COMPULSORY_PREFIXES);

Index index;

Expand All @@ -49,13 +49,12 @@ public EditCommand parse(String args) throws ParseException {
if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {
editStudentDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));
}
if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {
editStudentDescriptor.setMeetingLink(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));
if (argMultimap.getValue(PREFIX_SCHOOL).isPresent()) {
editStudentDescriptor.setSchool(ParserUtil.parseSchool(argMultimap.getValue(PREFIX_SCHOOL).get()));
}
if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {
editStudentDescriptor.setClassVenue(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));
if (argMultimap.getValue(PREFIX_YEAR).isPresent()) {
editStudentDescriptor.setYear(ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get()));
}
parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editStudentDescriptor::setTags);

if (!editStudentDescriptor.isAnyFieldEdited()) {
throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);
Expand Down

0 comments on commit e6533c6

Please sign in to comment.