PROJECT: ProManage
ProManage is a professional desktop application for companies that specialises in executing projects that undergoes a long and tedious planning phase. ProManage allow Manager and Employees of project teams to manage their team members and events easily. ProManage is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Overview
This project portfolio documents my contributions to the development of the CS2113 project, as part of my team T16-2.
Summary of contributions
-
Major enhancement: Added ability to login, logout, show user personalised event list via the
login
,logout
andshowmine
command-
What it does: Allow users to login according to designation
-
Justification: These features allow users to use application’s function according to their designation. Users who login with their personal email are able to list event they are listed as an attendee, therefore remove the need to go through the list of events to find the events they are associated with.
-
Highlights: Users who are at lower privilege level are not allow to use certain commands like add event, edit event, etc. The app will give invalid privilege error message when users attempts to use inappropriate function that does not match their privilege level. This is useful in helping users to differentiate between incorrect input commands and insufficient privilege commands.
-
-
Minor enhancement:
-
Created
sort
command which allows user to sort the event list according to the parameters they entered. This create convenient for users to find event in the event list. For example, they are able to sort events according to their date and find events that are occurring at earlier dates. -
Created the storage components for events so that the event created could be save as XML format.
-
Created the event class and it relevant components to transform the addressbook app to an event planner app.
-
Updated the mainapp to load eventlist xml or a sample of events when the app launches.
-
Implemented ProManageParser which parser all commands
-
-
Code contributed: [Functional code]
-
Other contributions:
-
Project management:
-
Documentation:
-
Updated the User Guide for Practical Exam 1
-
Updated the Developer Guide to include
sort
command, user stories for sort, login and use case for showmine, class diagram for parser. -
Include new test case for
login
andsort
command for Appendix F under developer guide.
-
-
Community:
-
PRs reviewed and merged
-
Helped other teammates to debug their code
-
-
Tools:
-
Setting up of reponsense
-
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Login the app: login
Priority level: default
Login to the app as one of the following identity: manager
or employee
or as EMAIL
.
The user can only login into ProManage if his/her email has been registered in the ProManage system before.
Once login, you will not be able to login again unless the user chooses to logout.
Format: login identity
Example:
login manager
login as johnd@example.com
Logout the app: logout
Priority level: manager
, employee
Logout the app once you have login.
After successfully logging out, you will be able to login again.
Format: logout
Example:
logout
Sorting all events: sort
Priority level: all
Sort the event listing based on the key words provided.
Able to sort with event’s name, event’s date, event’s starttime, event’s endtime.
If both event’s have the same date then starttime will be compared.
Key word:
1) event’s name: name
2) event’s date: date
3) event’s starttime: starttime
4) event’s endtime: endtime
Format: sort key word
Example:
-
sort name
Sort the event list alphabetically
Showing events associated with user: showmine
Priority level: manager
, employee
This function is only applicable to users who have login with their email.
Filter and list out events which they are listed as attendees.
Format: showmine
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
Parser component
API :
ProManageParser.java
-
ProManageParser
use children class ofCommandParser
(eg. ManagerParser) to parse the user command. -
When login/logout command is executed, the CommandParser object within ProManageParser is changed accordingly to DefaultParser, ManagerParser or EmployeeParser.
-
DefaultParser, ManagerParser or EmployeeParser are subclass of the abstract class CommandParser
-
This display the behaviour of polymorphism as ProManageParser will always pass the input into CommandParser but its behaviour depends on implementation of its subclass.
-
Each of it subclass will only know commands that is according to the privilege level.
Event Sorting
Current Implementation
The sort mechanism is facilitated by Comparator<Event>.
When the sort method for FXObservableList is called, it will take a Comparator object to be use for sorting the list.
The comparator is able to take in two Event class objects and compare the relative parameter values.
The parameter can be EventName
, Date
& StartTime
.
To allow sorting of these parameters, there are three types of comparators.
Design Considerations
Committing Event List after sorting
-
Alternative 1 (current choice): Commits and saves the entire event list.
-
Pros: Easy to implement and able to use undo to the previous state.
-
Cons: May have performance issues in terms of memory usage.
-
-
Alternative 2: Does not commit the event list.
-
Pros: Will use less memory.
-
Cons: Unable to use undo function to revert back to the previous view.
-