1. Overview
This Project Portfolio Page aims to illustrate what I have learnt while working on Hallper, as well as to document my contributions to the project. The different sections below will specify my contributions to different aspects of the project.
Hallper is a desktop application that is a centralized management system which is catered for the use by the Junior Common Room Committee (JCRC) of the halls in any school. Most of my team mates have stayed or are still staying in a hall and we identified that the JCRC in our respective halls seem to be having a hard time dealing with their administrative duties as there they have to liaise with many different parties. As a result, my team decided to build a centralized management system as our project for our software engineering module so as to help alleviate the inconvenience that they encounter while executing their duties. Hallper is an easy to use application which brings about much convenience to the JCRC since not much mouse interaction is required from them as everything can be done just by typing the commands available. By consolidating the types of features needed into a single application, this will save the JCRC the trouble of having to open many different window applications on their computers.
The main features included in Hallper are email writing, budget management, calendar creation, profile picture uploading as well as import and export of Hallper. With all these features in place, we believe that Hallper will be the one-stop solution for all JCRCs.
2. Summary of contributions
-
Major enhancement 1: added a image function to upload profile pictures into Hallper
-
What it does: This feature allows the user to upload profile pictures for residents that the user specifies.
-
Justification: This feature adds value to the product as the JCRC will then be able to see the faces of each resident through Hallper.
-
Highlights: This feature required the HTML file that is used to display the profile to receive relevant information, along with the tagged profile picture of the specified resident.
-
-
Major enhancement 2: added a search function to search for residents by room number, school or CCA
-
What it does: This feature allows the user to search for residents based on room numbers, schools or even the CCAs that the residents are in.
-
Justification: This feature improves the product significantly because a user might want to find residents based on certain specifications.
-
Highlights: This enhancement required manipulation of existing data fields of the residents since multiple specifications can be used as a search criteria
-
-
Minor enhancement: Changed select command to show profile page.
-
Code contributed: Code
-
Other contributions:
3. 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. |
Searching all residents under specified tag : search
Shows a list of all residents in the Hallper that are associated with the specified keyword.
Format: search KEYWORD [MORE_KEYWORDS]
Examples:
Searches Hallper and lists all residents that are in basketball
, staying in room A123
or studying in SoC
in the resident List Panel as seen in Figure 4.2.1.1 and Figure 4.2.1.2.
Figure 4.2.3.1: Screen before running search
on Hallper.
Figure 4.2.3.2: Screen after running search
on Hallper.
-
search SoC
Searches Hallper and lists all residents that are studying inSoC
. -
search basketball
Searches Hallper and lists all residents that are inbasketball
. -
search A123
Searches Hallper and lists all residents that are staying in roomA123
. -
search basketball A123 Soc
Adding a picture to resident detail : image
Saves a copy of the image of resident staying in the specified room to Hallper.
Format: image r/ROOM f/FILEPATH
Example:
-
image r/a123 f/C:/user/images/e0000000.jpg
Uploads the profile picture (in.jpg
) of the resident living in roomA123
into Hallper.
4. 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. |
Image feature
Current Implementation
The image feature allows .jpg
image files to be uploaded into Hallper to a specific person from the computer.
The feature is facilitated by ProfilePictureDirStorage
. It implements the follow operations:
-
ProfilePictureDirStorage#readProfilePicture(File file)
— Reads the file that is specified by the user through a path and returns a copy of the image that is being read. -
ProfilePictureDirStorage#saveProfilePicture(BufferedImage image, Room number)
— Saves the copied image into the computer.
Both operations are exposed in the Storage
interface as Storage#readProfilePicture(File file)
and
Storage#saveProfilePicture(BufferedImage image, Room number)
respectively.
Given below is an example usage scenario and how the image mechanism behaves at each step:
Step 1. The user specifies the file path of the .jpg
image to be uploaded and the person’s room number.
Step 2. ImageCommandParser
passes the room number and file that is specified by the file path to ImageCommand
.
Step 3. ImageCommand
searches Hallper for the person that is tagged with the specified room number. It returns an
error message if the room number specified is not tagged to any person.
Step 4. Once the room number is verified, a NewImageEvent
is raised from the ImageCommand
to initiate the reading
and copying of the image from the given file path.
Step 5. The NewImageEvent
goes to the EventCenter
, and is then handled by
StorageManager#handleNewImageEvent(NewImageEvent event)
. ProfilePictureStorage#readProfilePicture(File file)
is
then called to read the image file. After reading a valid image file, the
ProfilePictureStorage#saveProfilePicture(BufferedImage image, Room number)
is called to save the image into the
computer.
Step 6. Hallper then updates the person’s profile picture field with the name of the copied image.
The following sequence diagram shows how the image operation works:
Figure 4.7.1.1: Sequence diagram for image operation
The following activity diagram summarizes what happens when a user executes the image command:
Figure 4.7.1.2: Activity diagram for image operation
Design Considerations
Aspect: Choice of component to read and save the file
-
Alternative 1 (current choice): Read and save image file through
Storage
.-
Pro: Reading and saving files through
Storage
follows the architecture that the project is built upon. -
Con: Informing the user of invalid file path is much more complicated.
-
-
Alternative 2: Read and save image file through
ImageCommand
.-
Pro: Informing the user of invalid file path will be similar to when an invalid command is given.
-
Con: Reading and saving the image file from
ImageCommand
breaks the architecture of the project.
-
Aspect: Image type
-
Alternative 1 (current choice): Only
.jpg
image files.-
Pro: Copying the image will be easier since all images saved will be in the form of
.jpg
. -
Con: Limiting users to only being able to upload one type of image file.
-
-
Alternative 2: Allow for multiple image file types i.e
.jpg
,.png
.-
Pro: Increasing the valid image file types allows users to have more choices when choosing the picture to upload.
-
Con: Copying of the image will be more complicated since all images will be saved as a
.jpg
image file type.
-