Overview
LearnVocuabulary is a desktop application for people who prefer to use an offline version of the dictionary for learning purposes.
Summary of contributions
-
Major enhancement: Added the group feature to the application
-
What it does: This feature is used to manage the word group inside the application. For now, it bascally support four functionalities including add a empty word group, delete a word group and all the words inside, show all created wordgroups, and show words particularly in some word group.
-
Justification: This feature allows users to better manage and classify words that they want to learn into different groups. For example, in real life, words may need to be grouped for different purpose, different difficulty level and so on.
-
-
Minor enhancement: Enhanced the add command, which prevents user from adding word into group which has not been created.
-
Minor enhancement: Enhanced the edit command, which prevents user from editing word into group which has not been created.
-
Code contributed: [RepoSense collated code] (https://nus-cs2103-ay1819s1.github.io/cs2103-dashboard/#=undefined&search=harryqu123)
-
Other contributions:
-
Project management:
-
Managed releases
v1.0
-v1.4
(3 releases) on GitHub
-
-
Enhancements:
-
Community:
-
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. |
Showing word by different group: showgroup
(1). Shows all the existed group.
Format: showgroup
(2). Shows word inside some particular group.
Format: showgroup GROUPNAME
Examples:
-
showgroup toLearn
Returns all the word inside group toLearn
Creating a new empty group: groupadd
Creates a new group.
Format: groupadd GROUPNAME
Examples:
-
groupadd mustLearn
Creates a new empty group called mustLearn
deleting an existing group: groupdelete
Deletes a existed group with all the word inside.
Format: groupdelete GROUPNAME
Examples:
-
groupdelete mustLearn
Deletes group mustLearn and all the words inside
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. |
Group features
Current Implementation
The group feature is mainly for user to manage their word lists inside our LearnVocabulary application and it now supports three functionalitys, which are groupadd, groupdelete, and showgroup.
groupadd functionality implementation
Similar to the other existed functionalities, the groupadd functionality mainly consists of a GroupaddCommandParser and a GroupaddCommand.
The groupadd parser is indicated as GroupaddCommand
in parser
, and inherits the Parser
class. It enables the application to handle the input given by the the user, check its validity and delete whitespaces.
The groupadd command is indicated as Groupadd
in commands
, and inherits the Command
class. It handles a valid group name input and enables the user to "add" a empty word group to the application.
Given below is an example usage scenario and how the groupadd functionality behaves at each step.
Step 1: User calls “groupadd + [groupname]” where groupname
is the name of the newly added group.
Step 2: GroupAddCommandParser
checks the validity of the groupname, trim the given groupname and create the GroupaddCommand.
Step 3a: If the user set a group name that has already existed, the system throws an exception to the user to indicate that the group name has existed.
Step 3b: Otherwise it lets the model component to add the group with given groupname.
groupdelete functionality implementation
Similar to the other existed functionalities, the groupdelete functionality mainly consists of a GroupDeleteCommandParser and a GroupdeleteCommand.
The groupdelete parser is indicated as GroupDeleteCommand
in parser
, and inherits the Parser
class. It enables the application to handle the input given by the the user.
The groupdelete command is indicated as Groupdelete
in commands
, and inherits the Command
class. It handles a valid group name input and enables the user to "delete" a word group and all the words inside.
Given below is an example usage scenario and how the groupdelete functionality behaves at each step.
Step 1: User calls “groupdelete + [groupname]” where groupname
is the name of the desired deleted group.
Step 2: GroupDeleteCommandParser
checks the validity of the groupname, trim the given groupname and create the GroupdeleteCommand.
Step 3: GroupDeleteCommand
checks passed arguments.
Step 4a: If the user set a group name that does not exist, the system throw an exception to indicate that the desired deleted group does not exist.
step 4b: Otherwise it lets the model component to delete the group with given groupname. Especially, for those words which exist in this only deleted group, those words would also be deleted automately.
showgroup functionality implementation
Similar to the other existed functionalities, the showgroup functionality mainly consists of a ShowGroupCommandParser and a ShowGroupCommand.
The showgroup parser is indicated as ShowGroupCommand
in parser
, and inherits the Parser
class. It enables the application to handle the input given by the the user.
The showgroup command is indicated as ShowGroup
in commands
, and inherits the Command
class. It handles a valid group name input and enables the user to either see all the existing groups or open a selected word group and see all the words inside.
Given below are two example usage scenarios and how the showgroup functionality behaves at each step.
Example a
Step 1: User calls “showgroup + [groupname]” where groupname
is the name of the desired checked group.
Step 2: ShowGroupCommandParser
checks the validity of the groupname, trims the given groupname and create the ShowGroupCommand.
Step 3: ShowgroupCommand
checks passed arguments.
Step 4a: If the user set a group name that does not exist, the system throw an exception to indicate that the desired checked group does not exist.
Step 4b: Otherwise it lets the model component to update the groupname as the predicate in the filterList.
Example b
Step 1: User calls “showgroup”.
Step 2: ShowGroupCommandParser
creates the ShowGroupCommand.
Step 3: ShowGroupCommand
gets all the existing groupname from the model by calling getTags() and show these groupnames to the user.
Create a word group (Manual Testing)
-
Create a new empty word group.
-
Test case:
groupadd test
Expected: If the group test has not been created, then "test" will be created as a new word group. Otherwise some exception is handled and the user will see "The group typed has existed" -
Test case: 'groupadd '
Expected: Some exception is handled and the user will see "please type in the group". -
Test case:
groupadd stud_ispm
Expected: Some exception is handled and the user will see "Tags names should be alphanumeric". -
Test case:
groupadd groupa groupb
Expected: Some exception is handled and the user will see "Only one group can be created once".
-
Delete a word group (Manual Testing)
-
Delete a word group with all the word inside.
-
Test case:
groupdelete test
Expected: If the group test do exist, then group "test" and all the word inside will be deleted. Otherwise some exception is handled and the user will see "The group typed does not exist." -
Test case: 'groupdelete '
Expected: Some exception is handled and the user will see "please type in the group". -
Test case: 'groupdelete toLearn test'
Expected: Some exception is handled and the user will see "Only one group can be deleted once.". -
Test case:
groupdelete stud_ispm
Expected: Some exception is handled and the user will see "Tags names should be alphanumeric".
-
Show a word group or all the word group name (Manual Testing)
-
Show a word group or all the word group name.
-
Test case:
showgroup test
Expected: If the group test do exist, then all the words inside test group will be filtered and shown. Otherwise some exception is handled and the user will see "The group typed does not exist." -
Test case: 'showgroup '
Expected: All the existed word group will be shown. -
Test case: 'showgroup toLearn test'
Expected: Some exception is handled and the user will see "Only one group can be shown once.". -
Test case:
showgroup stud_ispm
Expected: Some exception is handled and the user will see "Tags names should be alphanumeric".
-