About the Project
For our Software Engineering module CS2113T, my team and I worked on morphing a given Command Line Interface (CLI) Address book for its use by Faculty Orientation Program (FOP) Project Directors for easier management of participant data during camps.
Purpose of the Project
Often it gets messy during the facilitation and organisation of FOP camps as the FOP participant size is a lot larger than normal camps and there are various critical student data that need to be passed around among organizers. FOP Manager will aid FOP Project Directors in viewing, sharing and changing the participant data more easily.
My Role
My role was to design features that will enable the separate listing of Freshmen, Orientation Group Leaders (OGL) and other participants in the camp, such as Organisers, from the contact list stored on FOP Manager. I was also tasked to do an export feature to export the all participants', all Freshmen’s and all OGLs' data from the contact list into an Excel spreadsheet. For more conveninet adding of multiple contacts, I was also tasked to do an import feature. Hence, I contributed the add_f
, add_o
, list_f
, list_o
, export
, export_f
, export_o
and import
features in the FOP Manager.
Summary of contributions
This section shows a summary of my coding, documentation and other contributions to the team project.
-
Major enhancements:
-
Feature 1: Listing of Freshmen and Orientation Group Leaders (OGLs)
-
Format:
list_f
,list_o
-
Purpose: To distinguish among the freshmen, the OGLs and other participants involved in the camp from the full contact list.
-
Justification: This command will help the FOP Project Directors to clearly see the participants in the list of freshmen involved, the list of OGLs involved and the list of other participants involved. It will also display the number of participants in each list to give the user an idea of the expected camp size and accordingly manage the logistics.
-
Highlights: This enhancement is a good to have feature for future enhancements where we need to pull out separate lists. The implementation tactfully used the understanding and flow of the Addressbook commands, reducing need for extensive lines of code.
-
Code contributed: [LINK of Pull Requests: #83, #81, #80, #55]
-
-
Feature 2: Exporting of data to an Excel file
-
Format:
export
,export_f
,export_o
-
Purpose: To export the data in the contact list to Excel spreadsheets, a form shareable with other organisers involved in the camp and others without access to FOP Manager. To also export the data of Freshmen and OGLs as separate lists as well.
-
Justification: This command is necessary for other organizers and non-organisers to be able to view the contacts, without altering the data stored in the FOP Manager. It will also allow the FOP Project Directors to share the contact list information to others without access to the FOP Manager. The export function will work hand-in-hand with the import function, to ensure there are multiple saved copies of the full contact list.
-
Highlights: This enhancement required the integration of a third-party library. Basic understanding of the usage of the library was sufficient for the implementation of this feature.
-
-
Feature 3: Importing of data from an Excel file
-
Format:
import
-
Purpose: To import contacts from an Excel spreadsheet, an easier way to add multiple contacts into the FOP Manager without needing to enter the
add
command continuously. It also allows for saving and loading of the contact list, by working hand-in-hand with theexport
command. -
Justification: This command is necessary to reduce the manual keying the FOP Project Director has to do to add contacts into the FOP Manager. It will also allow the FOP Project Director to load previous data exported from the FOP Manager, in case the Project Director losses the contact details from the FOP Manager. Thus, it is also purposeful in acting as a Back-up method.
-
Highlights: This enhancement required the integration of a third-party library. Basic understanding of the usage of the library was sufficient for the implementation of this feature.
-
Code contributed: [LINK of Pull Requests: #143]
-
-
-
Minor enhancement:
-
Feature: Adding of freshmen and Orientation Group Leaders(OGLs)
-
Format:
add_f
,add_o
-
Purpose: To add a freshman and an OGL, respectively to the contact list.
-
Justification: This command will help the FOP Project Directors to add a tag to the freshmen and the OGLs respectively, without the need to type out the tag "Freshman" or "OGL". The feature will automatically save the Freshman and OGL added with their respective tags.
-
Highlights: It was a necessary enhancement to implement for the various listing commands to work the way they were implemented.
-
-
-
Code contributed:
-
Functional code: [Add Freshman Command], [Add OGL Command], [List Freshmen Command], [List OGL Command], [Export Command], [Export Freshmen Command], [Export OGL Command], [Import Command]
-
Test code: [List Freshmen Command Test], [List OGL Command Test], [Export Command Test], [Export Freshmen Command Test], [Export OGL Command Test],
-
Check out more of my code on Project Code Dashboard here.
-
Other contributions:
-
I contributed to the User Guide and Developer Guide to update it with features that were added by the team (Pull requests #100, #99, #98, #87, #63, #51)
-
I approved of Pull Requests made by other members of the team (Pull requests #95, #64, #21)
-
I integrated a third-party library (Apache) to the project (Pull requests #97)
-
Contributions to the User Guide
We updated the given User Guide with instructions on how to use the features that we added to the morphed Address book. The following section will show the additions made to the FOP Manager User Guide for the features implemented by me. I made additions to the Add Commands, List Commands, Export Commands and the Import Command sections. This section will elaborate only on the Import Command and the Export Commands section. The rest of the commands can be found in the User Guide. |
Throughout this section, the following icons are used, as shown below:
This is a warning and they need to be heeded for FOP Manager to work smoothly. |
Export Command
Exporting the whole contact list : export
Exports all entries from your contact list to Excel Spreadsheet.
Format: export
-
Excel Spreadsheet name is FOP_MANAGER_LIST.xls.
-
Excel Spreadsheet will be saved in the current User Directory.
Entering the export
commands will result in an Excel Spreadsheet in the current User Directory. As shown below.
The Excel Spreadsheet will look like this:
There are other export commands to produce a spreadsheet for Freshmen and OGL lists as shown in the next two sections.
The name of the file will change accordingly, however, the location is the same.
Exporting only the Freshmen in the contact list : export_f
Exports all the Freshmen entries from your contact list to Excel Spreadsheet.
Format: export_f
-
Excel Spreadsheet name is FOP_MANAGER_FRESHMEN_LIST.xls.
-
Excel Spreadsheet will be saved in the current User Directory.
Exporting only the OGLs in the contact list : export_o
Exports all the OGL entries from your contact list to Excel Spreadsheet.
Format: export_o
-
Excel Spreadsheet name is FOP_MANAGER_OGL_LIST.xls.
-
Excel Spreadsheet will be saved in the current User Directory.
Import Command
Importing contact list : import
Imports contact list from an Excel Spreadsheet into the FOP Manager.
Format: import
Link to view the User Guide: [User Guide]
Contributions to the Developer Guide
I added the sections on Participant Management, the Export Feature and the Import Feature to the FOP Manager Developer Guide. The following section is an example contribution of the Participant Management section I wrote on in the Developer Guide and sample of the Export Feature and Import Feature sections. You can view the Export Feature and the Import Feature in greater detail from the Developer Guide. |
Participant Management
Participant management refers to how users manipulate and view the data of camp participants. Participants are categorised into 3 types: OGL, Freshman or other. This section describes how the 3 types of participants are managed.
In FOP Manager, participants can be added, edited, deleted and listed.
Add
-
add_o
: Adds an OGL type participant -
add_f
: Adds a Freshman type participant -
add
: Adds a participant who is neither OGL nor Freshman
Participant contact details can be viewed in different manners:
-
list
: Lists all participants in the camp -
list_o
: Lists all OGLs -
list_f
: Lists all Freshmen
All participants are stored in the same contact list as a UniqueParticipantList
in an AddressBook object. Participants created as OGLs or Freshmen differ only in the tags added to them. The different listing of the participants is very useful for Project Directors as it helps them to view the Freshmen and the OGL contacts separately, to specifically see who are in the respective lists and how many participants are there in each of the lists.
Current Implementation
The list commands, list_o
and list_f
, use the keywords/predicates "Freshman" and "OGL" to search through the tags of all participants in the contact list. All participants with matching tags of "Freshman" or "OGL" will be added into the filtered participant list, enabling the user to view all freshmen or OGLs in the contact list.
The following Sequence diagram below will explain how the list_f
command works in detail.
Sequence Diagram for listing Freshmen command
An example usage of the list_f
command is as follows:
Step 1: The user launches the application. The VersionedAddressBook
will be initialized with the initial address book state.
Step 2: The user enters the list_f
command . The list_f
command calls the FindingParticipantPredicate
class and searches all tags of each person for "Freshman".
Step 3: The updateFilteredPersonList()
takes in this predicate and the getFilteredPersonList()
is called to give the list of Freshmen in the contact list
The implementation is similar for the list_o
command with the use of FindingOglPredicate
instead where the searched tag is "OGL".
Design Considerations
This section elaborates on the possible ways for implementation that were considered and explains the analysis process of finally choosing the method of implementation.
Aspect: Separate management of freshmen and OGLs
Pros | Cons | |
---|---|---|
Alternative 1: Create 2 separate lists containing freshmen and OGLs separately, in addition to a full list containing all participants. |
Less computationally expensive to obtain separate lists of freshmen and OGLs. |
Involves greater code complexity to update any contact details, with greater room for error, and requires more memory and storage. |
Alternative 2 (current choice): Store all participants in the same list. |
Smaller code base needed, and allows for participants who are neither OGLs nor Freshmen (such as camp directors or camp commandants) to be added. |
More computationally expensive to access lists of freshmen and lists of OGLs. |
We decided to go ahead with Alternative 1 as it was easier to implement. It would not require creation of switch cases for the UI to display the respective lists and would not require unnecessarily long codes to filter out freshmen and OGLs from the participant list. The pros of doing Alternative 1 outweighs the pros of doing Alternative 2 hence the decision to implement the latter.
Link to view the Developer Guide: [Developer Guide]