Project: NeoXPro Manager
NeoXPro 4 is a desktop address book application extends from an existing stock application which was used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Code contributed: [Functional code] [Test code]
Locating persons by tags: findTag
(since v1.1)
Finds persons whose tags include all of the given keywords.
Format: findTag KEYWORD [MORE_KEYWORDS]
Examples:
-
findTag friend
Returns any person with afriend
tag -
findTag CS2103T friend
Returns all persons with bothfriend
andCS2103T
tag.
End of Extract
Justification
The address book had tags for each contact, however there was no way to search for contact with certain tags.
FindTag Command
The findTag command utilize the same implementation as the Find command for name. Instead of logic execute search via Name
attribute of Person, the command search in the TagList
attribute.
Tag component in model already had API methods for searching, which is similar to Name
which allows extracting value of the object.
The search algorithm utilize a class TagContainsKeywordsPredicate implements Predicate<ReadOnlyPerson>
which allows the algorithm to use Java Predicate
class method.
End of Extract
Locating a person’s address : locate
(since v1.3)
Locate the person’s address identified by the index number used in the last person listing.
Format: locate INDEX
Examples:
-
list
locate 2
Locates the 2nd person’s address in the address book. -
find Betsy
locate 1
Locates the 1st person in the results of thefind
command.
End of Extract
Justification
May help the user finding the contact address quickly and perhaps direction if the user want to go there.
Implementation
Similar to select command but load a google map page instead.
Adding an event: addEvent
(since v1.2)
Adds a person to the address book
Format: addEvent n/EVENT_NAME d/DD-MM-YY de/[EXTRA]
The event extra description is optional, can use as a to-do list. The event date is yyyy-mm-dd format.
|
Examples:
-
addEvent n/Return John 5 bucks d/2017-12-17 de/lunch money
Add a new event with description. -
addEvent n/Project Meeting d/2017-11-25 de/
Add a new event with empty description.
Deleting an event : deleteEvent
(since v1.4)
Deletes the specified event from the address book.
Format: deleteEvent INDEX
Examples:
-
deleteEvent 2
Deletes the 2nd listed event in the address book.
Auto-reminder (since v1.5)
NeoXPro Manager will remind the user events occur on the day when when starting the application.
End of Extract
Justification
The application is also meant to be a task manager. Thus there is a need to implement task/event functionality.
(Task) event management
The model for task event is implemented similar to person
class.
The EventList
is then linked up to the AddressBook
which is monitored by ModelManager
to reflect any change to the Addressbook
model.
The Ui components EventCard
and EventListPanel
are also hooked up to the model and reflect any changes made to filterEvents
.
Event auto-reminder
When the UiManager
component got initialized at the start of the application, a new ShowReminderRequestEvent
gets posted.
This is then handle by the MainWindow
which initialized one or more ReminderWindow
from the upcomingEvents
in the model.
End of Extract
Enhancement Added: Change application css theme
Justification
Original DarkTheme color looked dull and uninspired for a user end product.
Other contributions
-
Modified add command to accept partial string.
-
Updated the GUI part to display events.
-
Managed the team repository and progress as team lead.
-
Checked pull requests code quality. Resolved conflict and fix bugs from pull requests of other members.
-
Fixed all checkstyle errors of every team member.
-
Add tests to increase coverage by 5% (Pull requests #81, #82, #84, #85, #92)