Project: Schedubook
Schedubook is a desktop address book application which acts as both an address book and also acts as an aide for the scheduling of meetings, catering mainly to students. In addition to storing contacts and the information of meetings, Schedubook is also able to remind its users of upcoming meetings through the use of a popup and colours to indicate the urgency of certain meetings. The user interacts with it using a CLI, and it has a GUI created with JavaFX.
The purpose of this portfolio is to showcase the contributions that I have made towards the building of this application and also to justify the addition of the features or enhancements that I have made to the application.
Editing a meeting : editmeeting
Allows you to edits an existing meeting in the address book.
Format: (em)editmeeting INDEX [n/NAME] [d/DATETIME] [l/LOCATION]
Examples:
-
editmeeting 1 n/Shopping l/Clementi
Edits the name and location of the 1st meeting to beShoppingandClementirespectively. -
em 3 d/31-12-2017 00:00
Edits the date of the 3rd meeting in the meeting list to the respective date.
End of Extract
Justification
Addition of the editmeeting command allows the changing of details a Meeting object created by the user when required. For
example the location of a set meeting might be changed after the creation of the meeting and hence the editmeeting command would
be required to reflect this change in ScheduBook.
Edit Meeting
The edit meeting command is an undoable command which allows the user to edit the MeetingName, DateTime or Place of
a created Meeting object.
Implementation:
When the editmeeting command is called with the appropriate parameters given, an instance of the Meeting object is created
with the corresponding parameters. For example,
editmeeting 2 n/Lunch l/Jurong East Mall
Creates an object with the following parameters
MeetingName:Lunch
DateTime: null
Place: Jurong East Mall
This instance of the object Meeting is then compared to the preexisting Meetings in the addressbook corresponding
to the index that was given in the command line which for the example above is Index 2. The respective parameters
will then be replaced accordingly with the ones that were instantiated. As shown also, parameters that were not declared
(in the case of the example, it was DateTime), are defaulted to be null and will not be changed in the actual Meeting
object.
When given invalid inputs, the editmeeting command shares some of the exceptions
which are also thrown by the addmeeting command. They are:
-
DuplicateMeetingException: Compares the edited Meeting object with the other Meeting objects in the address book and this exception is thrown when there is a duplicate object with the same parameters. -
MeetingNotFoundException: Exception is thrown when the index provided to theeditmeetingcommand is referring to the invalid index of aMeetingobject in the addressbook -
MeetingBeforeCurrDateException: Exception is thrown when the date of the edited Meeting is earlier than that of the current system time, this exception is thrown. -
MeetingClashException: Exception is thrown when the DateTime of the editedmeeting is the same as one of the preexisting Meetings in the addressbook.
Design Considerations
Aspect: how EditMeetingCommand executes
Alternative 1 : Comparing the different parameters individually without the creation
of a new instance of a Meeting
Pros: More direct and faster way of editing the different parameters of the Meeting object
End of Extract
Locating meetings with a particular person: findexactmeeting
Finds and lists to you the meeting(s) with people whose names match exactly with the phrase entered.
Format: (fem)findexactmeeting PHRASE
Example:
-
findexactmeeting John Tan
returns only the meetings with people namedJohn Tan
Figure 5.14.1: Find exact meeting john tan
End of Extract
Justification
The implementation of findexactmeeting allows users to narrow down their search results as compared
to when using the findmeeting command as the conditions for a meeting to match the search results
are more strict. This command is useful when dealing with a large amount of meetings in the meeting list with people
of similar names. e.g, Clara Tan and Clara Soh
Find Exact Meeting
The find exact meeting command inherits from Command which allows users to find meetings in the meeting list with persons whose name matches the [PHRASE].
Implementation:
When the findexactmeeting command is called with the appropriate parameters, a search for the instance of the Meeting object.
The following sequence diagram shows how the command works:
Figure 5.8.1 : Find Exact Meeting Sequence Diagram
For example,
findexactmeeting john tan
Finds a meeting(s) with the following parameter as the name of the person stored in meeting
PHRASE: john tan
If none of the meetings contains the PHRASE, the results would show "No meetings found".
Design Considerations
Aspect: How to narrow down search results
Alternative 1: reducing the number of search results when more keywords are added
Pros: Allows more flexibility when searching for a specific meeting
Cons Might not be able to sufficiently narrow down search results when there is a large amount of meetings stored
Current Choice : Searching based on the entire name of a person
Pros: Able to significantly reduce the amount of meetings listed
Cons Restricts user to only search using one field
End of Extract
Enhancements Proposed
Integration of Google Calendar(Allowing import and export of meetings)
External Behavior
Upon typing in the command import, the application reads all the current meetings that the user has in the current
logged in google account and adds them to the meeting list of the application. Any invalid fields such as clashes in
timing will not be added and instead an error will be shown to the user.
Similarly, the exporting of meeting is the opposite and uses the command export. When the command is entered,
meetings in the application are transferred and added to the user’s google account.
Implementation
When the command is given, the application parses the details of the user’s events and creates a Meeting object in
Schedubook. Whilst adding the Meeting objects into the meetings list, the application checks whether the meetings
that are added are valid and throws any relevant errors.
Conversely, for the exporting of meetings, the details in the meeting cards are parsed and then provided to events in Google calendar for adding.
External Behavior
Schedubook opens on startup of the PC, helping to remind users of the meetings that are available that day
Implementation
Creation of a batch file to start the java file. Adding the batch file to the Startup folder for all users.