-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113-W13-2] easySEP #6
base: master
Are you sure you want to change the base?
Changes from 250 commits
3881f42
cc86010
4d2949c
2b54a20
2e802de
6bc6a4b
c02f52a
9566036
c9f1a89
ba58317
d5daed9
5f1f060
44aa51a
a50b0c1
51ed393
3a599f5
9385e9b
4326df4
ef32312
0f4e5b2
869f890
21f8632
2468e0b
a9292c7
5997452
f74c06d
43ccf4e
2f1e313
a66e638
78ca033
d026ad3
9a91763
bf88ac4
715bf7c
24e2304
70e0994
bbdd015
95fc94a
d0c0a6f
92cf32a
6a120b8
3bdeacc
58ff385
9234c7c
a2c392a
e3b51f4
96c0504
520ec70
552167a
0e16ef5
71af3d2
c1b7ea5
fbefb53
e716897
5381026
902160f
2c1c780
22abf4c
0209313
a1215a0
9d02fa0
233ed29
b89c678
ba50e09
c4136aa
9fc21c1
3269f6f
32a5c49
871aa1d
e66fee6
1f80db7
99aa02b
3248005
a8fa45e
b4f4a64
d5da7c9
8a1feaa
1b93210
0f83287
32d3be7
3b51e71
864fd5c
7a3e333
7bd7fd5
25f3fd0
8d24123
4715471
0aac4c0
826c0f2
9c1519b
92bb511
139e11f
2d4e2f0
1107399
49b50d4
bc8625f
636e050
966f0b5
890ad12
fb0a3cc
f00225f
b9d205b
6bbeb97
6176f6e
ce1cd0a
39820d9
1a387a8
89e0702
657be14
38e16e1
cad8bb4
961eb7a
355d4b5
986ea05
775ffd9
f55373e
b398de9
5fe089a
1759d7d
aaf4013
004074f
4698b4c
b903b9f
2151bf9
006f648
767b29c
3338018
292de1a
e0e25ee
2915e16
b734ea6
ad0b3cc
e81655c
1df459f
c1f9ce5
234db06
0b8d943
15c8d5c
81c2f97
bbc9b88
8c158de
3e47b9f
8f73a01
66eb1ec
3730e53
06649f7
2679de8
7a4177a
bfcdff1
474586b
0cbdc71
c4468f7
adb9b1e
a224815
5dda76e
2b92f41
7a760d1
a4b16cc
792b0e4
9fad1cd
ae2a74e
310c9a1
15eda3c
af5b9d5
0ea489f
bd95721
c319a9c
791e823
210aad4
1ba19fb
7b00f74
4463a67
9f7931f
0f9d906
2d4081f
bbc7513
aef412c
2df0c0a
9007e6b
098170f
2353896
5fde720
03fb373
8f5e0d3
3041a3e
a4b8e46
f16a923
478646b
ef605c7
9bb0711
32450ff
4abc57d
3d2ced8
b6eb5e0
25601eb
8fa427e
7976e30
2cc7bd2
1139983
bc4812e
29fc387
7c2cad1
141f341
79ce3eb
0a57489
38e6f1d
e226623
f7e161a
ff2ec17
cdefd73
7185092
054b909
0676318
28c7ab3
178b5ef
8269ec3
17d26c2
5b6889f
a479cca
aca36fd
33cc4bd
2afca23
e865cac
2220220
966963e
46253de
4784cee
cf0f62a
7dad0c7
d7b0f0e
f750525
e04f3bf
f32982b
54c6c37
a080de8
3df1662
201d0c0
bad9620
25d5f6a
3a187e6
0c99ce2
99b07e2
c64d45d
272e1c1
35d1e6c
4b97714
8e64cef
d92ab8c
856b5ee
08408cd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"java.configuration.updateBuildConfiguration": "interactive" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -43,4 +43,5 @@ checkstyle { | |
|
||
run{ | ||
standardInput = System.in | ||
enableAssertions = true | ||
} |
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Hanyang University% | ||
CSE1002;Introduction to computer science;3;nil;wednesday;15:00;16:00% | ||
/Boston University% | ||
CS103;Introduction to Internet Technologies and Web Programming;3;nil;tuesday;11:00;12:00% | ||
MET CS 248;Discrete Mathematics;3;nil;monday;11:00;12:00% |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Hanyang University% | ||
null% | ||
F% | ||
/Boston University% | ||
null% | ||
F% | ||
CS103;Introduction to Internet Technologies and Web Programming;3;IT1001;Introduction to Computing;4% |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
# About us | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:----:|:--------------:|:---------: | ||
 | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
 | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) | ||
|
||
Display | Name | Github Profile | Portfolio | ||
--------|:--------:|:-----------------------------:|:---------: | ||
 | Ong Zhi Hong | [Github](https://github.com/helpdesk1234) | [Portfolio](linkedin.com/in/ongzhihong) | ||
 | Ian Ng | [Github](https://github.com/nshian) | [Portfolio](https://www.linkedin.com/in/nshian) | ||
 | Wang Tingjia | [Github](https://github.com/wangtingjia) | [Portfolio](https://www.linkedin.com/in/wangtingjia/) | ||
 | Alfred | [Github](https://github.com/alfred-leong) | [Portfolio](https://www.linkedin.com/in/alfred-leong/) | ||
 | Joshua Nee | [Github](https://github.com/joshuan98) | [Portfolio](docs/team/johndoe.md) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,8 +8,189 @@ | |
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You can actually omit this line :) |
||
|
||
### Database | ||
|
||
The database reads in SEP module data from data.csv and stores the useful data into an ArrayList of module mappings and universities. | ||
|
||
Upon starting easySEP, the DatabaseStorage will load each line from data.csv, parse the line using DatabaseParser, and store the data into the Database. | ||
|
||
Relevant exceptions are thrown when there are unexpected scenarios. For instance, if data.csv cannot be found at the given file path, a FileNotFoundException is thrown. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You may consider putting data.csv in a code block, e.g. |
||
|
||
The following diagram illustrates the relationships between the three main database classes - DatabaseStorage, DatabaseParser, and Database. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good that the multiplicity and directionality are all included! |
||
|
||
The following diagram illustrates the flow of the program, from the initial loadDatabase call to the eventual completion of updating the entire database. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
### User Storage | ||
|
||
User Storage stores 2 different user information. University list is a list of interested universities for SEP | ||
and it is stored in a text file ("data/uni_info.txt"). For each university in the list, information includes | ||
Partner University's name, country, list of modules and their corresponding information. It also records whether the | ||
user previously added the particular university in the favourites list. Timetable list is a list of timetables | ||
for universities that the user is interested in and it is stored in a text file ("data/timetable_info.txt"). For each | ||
timetable in the list, information includes Partner University's name, country, module information and lesson timings. | ||
|
||
Upon starting easySEP, the UserStorage class will take in information from both text files and convert them into Strings. | ||
UserStorageParser will create a new UserUniversityListManager, by converting the String into a HashMap<String, UserUniversityList> | ||
which serves as myManager for the UserUniversityListManager class. UserStorageParser will also create a new TimetableManager, | ||
and add lessons to the TimetableManager, using the String extracted from the text file. | ||
|
||
Relevant exceptions are thrown when there are unexpected scenarios. For example, if the data in the text file is stored in an invalid format, | ||
an InvalidUserStorageFileException will be thrown. | ||
|
||
During the duration of the program, whenever the user decides to alter the data corresponding to UserUniversityListManager | ||
(ie. add / delete universities or modules, or create new university list), UserStorageParser class will update "data/uni_info.txt" accordingly. | ||
Similarly, whenever the user decides to alter the data corresponding to TimetableManager (ie. add / delete lessons), UserStorageParser class will update | ||
"data/timetable_info.txt" accordingly. This is achieved by converting UserUniversityListManager / TimetableManager into a String, | ||
before saving it in the text file. | ||
|
||
The following diagram illustrates the relationships between the two main user storage classes - UserStorage and UserStorageParser. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great detailed class diagram that gives an overview of the functions in the parser. To aid readability and understanding, maybe you might want to reduce the functions that are shown in the diagram and show the more important ones instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Class diagrams are nice with additional information on the navigability |
||
|
||
The following diagram illustrates the flow of the program, from initialisation to updating of the text file. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice diagrams!!! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like how there are separate dividers in the sequence diagram, i.e. Initialization and Getting User Input to demarcate the purpose very clearly. Nice! |
||
|
||
### Timetable | ||
|
||
Upon starting easySEP, a TimetableManager is created in preparation for users to begin adding Timetables. The TimetableManager is used to create new Timetables, manage existing Timetables and delete old Timetables. | ||
These Timetables are stored in a HashMap and indexed by university name to facilitate easy reference. | ||
|
||
For existing Timetables, they can be used to add and delete Lessons. Each Timetable is made up of a HashMap of ArrayLists(type: Lesson) indexed by weekday e.g. Monday for easy compartmentalisation. | ||
Within Timetables, Lessons will compromise details like the day, start time and end time. The ArrayLists(type: Lesson) are sorted in non-descending order by the start time of the Lessons. | ||
|
||
Relevant exceptions are thrown when unanticipated scenarios occur. For instance, if the user attempts to delete a non-existent Timetable, a TimetableNotFoundException is thrown. | ||
Another example is the user attempting to add a lesson that is conflicting with an existing lesson in his/her timetable. In this case, a TimetableClashException is thrown. | ||
|
||
The following diagram illustrates the relationships between the three main timetable classes - TimetableManager, Timetable and Lesson. | ||
|
||
 | ||
|
||
In chronological order, the following diagrams illustrate the flow of the program for adding lessons, deleting lessons and displaying timetables to the user. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. All 3 class diagrams are well explained and focused on the main flow. |
||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Detailed and clear diagram. Perhaps might want to put the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
 | ||
 | ||
|
||
### Delete History | ||
|
||
To help users recall the modules that they had recently deleted, the Delete History feature allows them to view up to 5 most | ||
recently deleted module mappings. This can help them to add the module mappings back to the lists without having to search for the specific | ||
module code again. | ||
|
||
The UserDeletedModules class has an ArrayDeque, which stores the recently deleted module mappings. | ||
When the user deletes a module mapping, it will be added to the ArrayDeque. | ||
If the ArrayDeque already contains 5 module mappings, the last one (least recent) will be deleted, before the addition of a new module mapping. | ||
Do note that delete history information is not stored upon exiting the app (ie. it is not stored in User Storage). | ||
|
||
The following diagram illustrates the relationship between UserUniversityListManager and UserDeletedModules classes. | ||
|
||
 | ||
|
||
The following diagram illustrates the flow of the program, when a user deletes a module. | ||
|
||
 | ||
|
||
### Ui | ||
|
||
The Ui class is the cornerstone of the Duke program to facilitate interaction with the user. It is used to scan and collect user input, print error messages to the user upon invalid input commands, | ||
and display the appropriate acknowledgements or required information based on the user's command. | ||
|
||
The following diagram illustrates the methods within the Ui class that can be invoked by the other classes in Duke for the purpose of user interaction. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice looking class diagram with clearly written functions. I think you might want to consider adding like how the class is connected to other classes in the application, rather than showing it as a standalone UI class on its own |
||
|
||
 | ||
|
||
### Commands | ||
|
||
To interact with easySEP, users have to input commands specified with parameters to perform operations which will be passed to the CommandParser to generate a corresponding Command according to their input. | ||
The Command will then be executed to perform the operation on the other classes managing the timetables and databases. Error checking is handled to throw InvalidUserCommandException if the user's input does not match | ||
the specified Command format. To deal with parsing parameters, spaces in University names and Module codes are to be replaced with underscores. | ||
|
||
The following class diagram illustrates the relationship between Command class and its subclasses as well as other classes related to Commands. | ||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Your command class diagram is not rendered on the website view (https://ay2223s1-cs2113-w13-2.github.io/tp/DeveloperGuide.html), might want to look into this |
||
|
||
#### Create Command | ||
|
||
A Create command can be used to create a university list and its corresponding timetable. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of a create command. | ||
|
||
 | ||
|
||
#### Exit Command | ||
|
||
An Exit command can be used to exit the application. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of an exit command. | ||
|
||
 | ||
|
||
#### Help Command | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (For all the command classes) Please write more explanation to support the diagrams rather than the short one to three sentences! |
||
A Help command can be used to exit the application. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of a help command. | ||
|
||
 | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are missing columns in your sequence diagram as UI, database, etc. are objects |
||
#### Add Command | ||
|
||
An add command can be used to add a lesson to the timetable or add a module mapping to the user university list. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of an add command. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You might want to take separate screenshots as the sequence is huge and is not really readable. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. consider using reference frames for your sequence diagrams to help you break down your sequence diagrams There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You may wish to consider removing the trivial functions from the sequence diagram so that more emphasis is placed on the important functions, and help improve readability of your diagram. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider abstracting and explaining only the logic of the add command. The interaction with Duke class could be excluded and explain in an overall sequence diagram before all the command class. |
||
|
||
#### Delete Command | ||
|
||
A delete command can be used to delete a lesson from the timetable, delete a module mapping from the user university list or delete an entire user created university list. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of a delete command. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You may consider adding |
||
|
||
#### View Command | ||
|
||
A view command can be used to view all user created university lists, view user's delete history, view user's selected university list or view all the user's created university lists' timetables. | ||
|
||
The following sequence diagram illustrates the relationship between the respective classes involved in the creation and execution of a view command. | ||
|
||
 | ||
|
||
#### List Command | ||
|
||
A list command can be used to display all the module mappings in the database, all the universities in the database, or allow users to filter by NUS module code or partner university name. | ||
|
||
The following class diagram illustrates the relationship between the respective classes involved in the creation and execution of a list command. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice graph! Can add more labels to the graph so that the graph is clearer |
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like that there is an There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
To differentiate between the various functions of the list command, a variable `listOption` is used. This variable signals Duke to execute the relevant commands accordingly. | ||
|
||
The following sequence diagram illustrates the flow of the program to read in the user input, parse the user input, check if it is a valid list command, and execute the relevant list command based on the `listOption`. | ||
|
||
 | ||
|
||
#### Favourite Command | ||
|
||
A favourite command can be used by the user to favourite or un-favourite lists of module mappings that they have curated. It can also be used to display all of the user's favourite lists and the module mappings they contain. | ||
|
||
To differentiate between the various functions of the favourite command, a variable `favouriteOption` is used. This variable signals Duke to execute the relevant commands accordingly. | ||
|
||
The following class diagram illustrates the relationship between the respective classes involved in the creation and execution of a favourite command. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we are not taught to use the circle bubbles in the diagrams, which I think it really makes the diagram more clear, you do however might want to consider taking the bubbles away? |
||
|
||
The following sequence diagram illustrates the flow of the program to read in the user input, parse the user input, check if it is a valid favourite command, and execute the relevant favourite command. | ||
|
||
 | ||
|
||
## Product scope | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Don't forget to add this in!! |
||
### Target user profile | ||
|
||
{Describe the target user profile} | ||
|
@@ -20,18 +201,18 @@ | |
|
||
## User Stories | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
| Version | As a ... | I want to ... | So that I can ... | | ||
| ------- | -------- | ------------------------- | ----------------------------------------------------------- | | ||
| v1.0 | new user | see usage instructions | refer to them when I forget how to use the application | | ||
| v2.0 | user | find a to-do item by name | locate a to-do without having to go through the entire list | | ||
|
||
## Non-Functional Requirements | ||
|
||
{Give non-functional requirements} | ||
|
||
## Glossary | ||
|
||
* *glossary item* - Definition | ||
- _glossary item_ - Definition | ||
|
||
## Instructions for manual testing | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am unsure if you missed this section or decided not to do it, as it is empty. Consider deleting it if you don't need it. |
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello! There isn't an introduction on what your application is about :/
As well as any acknowledgement is missing as well.