Skip to content
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-F15-4] BookBuddy #54

Open
wants to merge 494 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 237 commits
Commits
Show all changes
494 commits
Select commit Hold shift + click to select a range
710ffae
Merge pull request #86 from liuzehui03/expanding_find_function
liuzehui03 Apr 4, 2024
b96b434
updated UG and list of commands in help
liuzehui03 Apr 4, 2024
7b035be
Merge pull request #87 from liuzehui03/expanding_find_function
liuzehui03 Apr 4, 2024
84adc3c
Add single step operation of set-genre method for pro users
yeozongyao Apr 4, 2024
de13d71
Checkstyle fixes
yeozongyao Apr 4, 2024
3a3fc92
Checkstyle fixes
yeozongyao Apr 4, 2024
ed5e560
Merge pull request #88 from yeozongyao/branch-zongyao-setgenre
yeozongyao Apr 4, 2024
9412bb1
Update user guide
yeozongyao Apr 4, 2024
ec569b3
Merge pull request #89 from yeozongyao/branch-zongyao-setgenre
yeozongyao Apr 4, 2024
4b1f6d9
Update developer guide
yeozongyao Apr 4, 2024
0609e25
Authorship edits
yeozongyao Apr 4, 2024
d027b8f
Merge pull request #90 from yeozongyao/branch-zongyao-setgenre
yeozongyao Apr 4, 2024
1c787a4
fix bug such that capitalization of letters do not matter when using …
liuzehui03 Apr 4, 2024
9a0e416
Update UG
lordgareth10 Apr 4, 2024
27e46ca
fix checkstyle error
liuzehui03 Apr 4, 2024
f30228c
Merge pull request #95 from lordgareth10/master
lordgareth10 Apr 4, 2024
c0194a2
Merge pull request #94 from liuzehui03/master
liuzehui03 Apr 4, 2024
9c47da6
Bug fix for set-genre feature
yeozongyao Apr 4, 2024
63ffe2d
Update Set-Genre junit test
yeozongyao Apr 4, 2024
428e620
Checkstyle fixes
yeozongyao Apr 4, 2024
d73c73c
Checkstyle fixes
yeozongyao Apr 4, 2024
bf0a3ea
Merge pull request #96 from yeozongyao/branch-zongyao-setgenre
yeozongyao Apr 4, 2024
0526880
Fix bugs in genre and label commands
lordgareth10 Apr 5, 2024
fd72967
Merge pull request #97 from lordgareth10/master
lordgareth10 Apr 5, 2024
1b6a222
update UG
liuzehui03 Apr 5, 2024
9ada02d
Merge pull request #98 from liuzehui03/master
liuzehui03 Apr 5, 2024
e5c0a5c
no message
liuzehui03 Apr 5, 2024
73bb92d
Merge pull request #99 from liuzehui03/master
liuzehui03 Apr 5, 2024
b71fd50
Authorship edits
yeozongyao Apr 5, 2024
456c954
Merge pull request #100 from yeozongyao/branch-zongyao-setgenre
yeozongyao Apr 5, 2024
97f9875
find_label feature
liuzehui03 Apr 5, 2024
861e712
fixed error
liuzehui03 Apr 5, 2024
5fa73e6
Merge pull request #101 from liuzehui03/master
liuzehui03 Apr 5, 2024
f08aa61
update find-label feature
liuzehui03 Apr 5, 2024
516797b
Merge pull request #102 from liuzehui03/master
liuzehui03 Apr 5, 2024
07002fc
created separate class for BookFind
liuzehui03 Apr 5, 2024
3ef2737
fix checkstyle error
liuzehui03 Apr 5, 2024
b238ed1
fix checkstyle
liuzehui03 Apr 5, 2024
cae51b9
Merge pull request #103 from liuzehui03/master
liuzehui03 Apr 5, 2024
68c9344
Add exception handling for FileStorage to deal with corrupted text file
Joshuahoky Apr 5, 2024
df7ae15
Fix checkstyle issue
Joshuahoky Apr 5, 2024
a1840d0
Merge pull request #104 from Joshuahoky/branch-fileStorage
Joshuahoky Apr 5, 2024
e82d270
Add more exception handling for corrupted text file
Joshuahoky Apr 5, 2024
a512908
Merge pull request #105 from Joshuahoky/branch-fileStorage
Joshuahoky Apr 5, 2024
90c9aae
Add datetime read feature
lordgareth10 Apr 8, 2024
ba52217
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp …
lordgareth10 Apr 8, 2024
e93069d
Fix checkstyle
lordgareth10 Apr 8, 2024
26e84cf
Merge pull request #146 from lordgareth10/Datetime
lordgareth10 Apr 8, 2024
780b896
updat BookFind
liuzehui03 Apr 8, 2024
ba647d8
no message
liuzehui03 Apr 8, 2024
2c78698
no message
liuzehui03 Apr 8, 2024
55e1268
checkstyle fixes
liuzehui03 Apr 8, 2024
9b2ab9c
checkstyle fixes
liuzehui03 Apr 8, 2024
3858f9f
Merge pull request #147 from liuzehui03/master
liuzehui03 Apr 8, 2024
add2227
update Ui
liuzehui03 Apr 8, 2024
56345d5
Merge pull request #148 from liuzehui03/master
liuzehui03 Apr 8, 2024
cf3daab
improve ui
liuzehui03 Apr 9, 2024
d7e92ad
added assertions
liuzehui03 Apr 9, 2024
7c4477f
junit test fixes
liuzehui03 Apr 9, 2024
34a8243
Merge pull request #149 from liuzehui03/master
liuzehui03 Apr 9, 2024
49d219a
fix find-genre issue
liuzehui03 Apr 9, 2024
6c1bbd5
Merge pull request #150 from liuzehui03/master
liuzehui03 Apr 9, 2024
a1786c9
added find-rate
liuzehui03 Apr 9, 2024
db5f12a
checkstyle fix
liuzehui03 Apr 9, 2024
32f516b
checkstyle fix
liuzehui03 Apr 9, 2024
0d17ef0
Merge pull request #151 from liuzehui03/master
liuzehui03 Apr 9, 2024
11ec90c
update UG
liuzehui03 Apr 9, 2024
d4dbd0a
Merge pull request #152 from liuzehui03/master
liuzehui03 Apr 9, 2024
0edcddd
Add list-by-date command
lordgareth10 Apr 9, 2024
ef92ceb
Merge pull request #153 from lordgareth10/master
lordgareth10 Apr 9, 2024
04f8aa4
Update UG and add javadocs
lordgareth10 Apr 9, 2024
e469438
Merge pull request #154 from lordgareth10/master
lordgareth10 Apr 9, 2024
a5e0f9a
Bug fixes -
yeozongyao Apr 9, 2024
0068a36
Checkstyle fix - wrong indentation for javadoc
yeozongyao Apr 9, 2024
3e787fe
Checkstyle fixes for gareth - wrong indentation for javadoc
yeozongyao Apr 9, 2024
ae844d6
Checkstyle fix for gareth - wrong indentation for javadoc
yeozongyao Apr 9, 2024
c9e4191
Checkstyle fixes for gareth - wrong indentation for javadoc
yeozongyao Apr 9, 2024
21d8e28
Merge pull request #155 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 9, 2024
2601b0e
Bug fixes -
yeozongyao Apr 9, 2024
6c0edaa
Checkstyle fixes - line longer than 120 characters
yeozongyao Apr 9, 2024
f2a0828
Merge pull request #156 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 9, 2024
2f4958c
Test
yeozongyao Apr 9, 2024
dd5b2d6
Bug fixes -
yeozongyao Apr 9, 2024
efdff81
Checkstyle fixes - lines longer than 120 characters
yeozongyao Apr 9, 2024
beff5a6
Checkstyle fixes - wrong indentation
yeozongyao Apr 9, 2024
0d3d4f5
Merge pull request #158 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 9, 2024
b361ce6
Bug fixes -
yeozongyao Apr 9, 2024
925208b
Checkstyle fixes - wrong variable declaration order
yeozongyao Apr 9, 2024
66dfae5
Merge pull request #159 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 9, 2024
1678a54
Bug fix -
yeozongyao Apr 10, 2024
955f809
Bug fix -
yeozongyao Apr 10, 2024
eeb669b
Bug fixes -
yeozongyao Apr 10, 2024
38ee255
Merge pull request #160 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 10, 2024
e38893b
Update Developer Guide to include sequence diagrams for set-label fea…
yeozongyao Apr 10, 2024
9b85f94
Merge pull request #161 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 10, 2024
6ee9ecf
Documentation and refactoring
lordgareth10 Apr 10, 2024
42af33b
Merge pull request #162 from lordgareth10/master
lordgareth10 Apr 10, 2024
d7ed909
Refactor printbookdbydateread method
lordgareth10 Apr 10, 2024
2855eaf
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp
lordgareth10 Apr 10, 2024
bb3302f
Bug fix - immutable list cannot be modified. Changed it to be modifiable
yeozongyao Apr 10, 2024
17d3a48
Merge pull request #164 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 10, 2024
a47ef27
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp
lordgareth10 Apr 10, 2024
1ae9490
Bug FIx: Mishandling for incorrect user commands for METHOD: list
lordgareth10 Apr 10, 2024
264917b
FIx bugs for all list commands
lordgareth10 Apr 10, 2024
f666bd6
Merge pull request #165 from lordgareth10/master
lordgareth10 Apr 10, 2024
9427462
Update User Guide for improved readability
Joshuahoky Apr 10, 2024
88bafb9
Merge pull request #166 from Joshuahoky/master
Joshuahoky Apr 10, 2024
85274a1
Fix bug regarding message displayed when removing book from empty list
Joshuahoky Apr 10, 2024
688503c
Fix checkstyle
Joshuahoky Apr 10, 2024
0d39ad8
Merge pull request #167 from Joshuahoky/branch-bugFixing
Joshuahoky Apr 10, 2024
6833b5e
Add author for book
lordgareth10 Apr 10, 2024
bb45824
Fix checkstyle
lordgareth10 Apr 10, 2024
87060d0
Merge pull request #168 from lordgareth10/branch-Author
lordgareth10 Apr 10, 2024
dffe06e
Add check for duplicate books for add and set-author commands
lordgareth10 Apr 11, 2024
ad0f9ec
Merge pull request #169 from lordgareth10/master
lordgareth10 Apr 11, 2024
3358171
Added PPP for zong yao
yeozongyao Apr 11, 2024
e0d1899
Update PPP
yeozongyao Apr 11, 2024
ba3f7d5
Merge pull request #170 from yeozongyao/branch-zongyao-pedbugs
yeozongyao Apr 11, 2024
62ae195
Update UG and help command
lordgareth10 Apr 11, 2024
a487345
Update PPP
liuzehui03 Apr 12, 2024
88bc37e
Merge pull request #172 from liuzehui03/master
liuzehui03 Apr 12, 2024
2a7af01
added find-author
liuzehui03 Apr 12, 2024
f4d2568
Added comments
liuzehui03 Apr 12, 2024
08eb0d2
Checkstyle fixes
liuzehui03 Apr 12, 2024
8dd8f05
Merge pull request #173 from liuzehui03/master
liuzehui03 Apr 12, 2024
cff2977
Merge pull request #171 from lordgareth10/master
lordgareth10 Apr 12, 2024
43d9261
PPP update
lordgareth10 Apr 12, 2024
3c91489
Merge pull request #174 from lordgareth10/master
lordgareth10 Apr 12, 2024
ebd04d4
Bug Fix: [PE-D][Tester E] Adding a space before the index makes the c…
lordgareth10 Apr 12, 2024
68af54f
Bug Fix: [PE-D][Tester D] Function accepts commands with extra parame…
lordgareth10 Apr 12, 2024
4e08a33
Bug Fix: [PE-D][Tester F] Inproper Exception Handling #135
lordgareth10 Apr 12, 2024
36a2fc4
Merge pull request #175 from lordgareth10/master
lordgareth10 Apr 12, 2024
cf9dc87
Update PPP
Joshuahoky Apr 12, 2024
c333b14
Merge pull request #176 from Joshuahoky/master
Joshuahoky Apr 12, 2024
6e48fef
Add more exception handling for fileStorage class
Joshuahoky Apr 12, 2024
92a7e1f
Update UG
Joshuahoky Apr 12, 2024
a7835ea
Merge pull request #177 from Joshuahoky/branch-bugFixing
Joshuahoky Apr 12, 2024
0aa462b
Update DG
Joshuahoky Apr 12, 2024
c5082dc
Merge pull request #178 from Joshuahoky/master
Joshuahoky Apr 12, 2024
8cccf6b
Clean up code for set-genre, label and rate features and minor code e…
yeozongyao Apr 12, 2024
79d8aeb
Merge pull request #179 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 12, 2024
932c633
Added Junit tests for SetBookRating, ParserRating, ParseList, ParseLi…
yeozongyao Apr 12, 2024
72c68bf
Fix system support error for JUnit tests
yeozongyao Apr 12, 2024
ebf9b86
Merge pull request #180 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 12, 2024
8559dee
Fix issue #118
liuzehui03 Apr 13, 2024
6463a01
Merge pull request #181 from liuzehui03/master
liuzehui03 Apr 13, 2024
5cf817e
Bug fix - change availablegenre arraylist to be non-static. Reformatt…
yeozongyao Apr 13, 2024
d5924d8
Checkstyle fix - wrong indentation
yeozongyao Apr 13, 2024
61a1891
Merge pull request #182 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 13, 2024
b9e8c4c
Fix minor bugs and add testing for remove and display commands
Joshuahoky Apr 13, 2024
107ecf5
Merge pull request #188 from Joshuahoky/branch-testing
Joshuahoky Apr 13, 2024
8384f7e
Fixed bug where user is unable to exit from secondary input to primar…
yeozongyao Apr 13, 2024
1416bed
Checkstyle fix - line longer than 120 lines
yeozongyao Apr 13, 2024
0d34f56
Merge pull request #189 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 13, 2024
3651acc
Fix bug where user will not get warning if giving same rating or labe…
yeozongyao Apr 13, 2024
a0049c9
Merge pull request #190 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 13, 2024
2142474
Added features to remove genre and to list the current available genres
yeozongyao Apr 13, 2024
2717594
Checkstyle fixes - end with new line
yeozongyao Apr 13, 2024
dd5ae54
Merge pull request #191 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 13, 2024
45cd16a
Add Junit test cases for set-genre, rate, label, add, list, list-genr…
yeozongyao Apr 14, 2024
44ca3a9
Checkstyle fixes
yeozongyao Apr 14, 2024
f66375c
Merge pull request #192 from yeozongyao/branch-zongyao-testcodes
yeozongyao Apr 14, 2024
0ba1a36
Bug fix - Exception message should be more accurate
yeozongyao Apr 14, 2024
c8c63de
Added documentation for features under yeozongyao
yeozongyao Apr 14, 2024
04b28cc
Checkstyle fixes
yeozongyao Apr 14, 2024
12e624b
Merge pull request #195 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 14, 2024
136b5eb
Added documentation in developer guide - Set Rating feature and BookM…
yeozongyao Apr 14, 2024
9c46538
Merge pull request #196 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 14, 2024
02fddf2
Bug fix - set-genre feature loop does not continue when a wrong input…
yeozongyao Apr 14, 2024
9fb9833
Merge pull request #197 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 14, 2024
28e1199
Update UG and DG
liuzehui03 Apr 15, 2024
63975a9
Merge pull request #198 from liuzehui03/master
liuzehui03 Apr 15, 2024
667c9d8
Update Ui help message
liuzehui03 Apr 15, 2024
b513ee2
Merge pull request #199 from liuzehui03/master
liuzehui03 Apr 15, 2024
2533bcb
Updae DG, UG and PPP
Joshuahoky Apr 15, 2024
3da37aa
Merge pull request #200 from Joshuahoky/master
Joshuahoky Apr 15, 2024
109ccf0
Update UG and PPP
Joshuahoky Apr 15, 2024
6e58f53
Merge pull request #201 from Joshuahoky/master
Joshuahoky Apr 15, 2024
5188332
Update DG
liuzehui03 Apr 15, 2024
3c7c0e2
Merge pull request #202 from liuzehui03/master
liuzehui03 Apr 15, 2024
cc761d9
Update DG
liuzehui03 Apr 15, 2024
403bc58
Merge pull request #203 from liuzehui03/master
liuzehui03 Apr 15, 2024
1dd2c99
Add more JUnit tests for find methods and exceptions
lordgareth10 Apr 15, 2024
e703274
Bug fix - added accurate exception messages
yeozongyao Apr 15, 2024
69975db
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp …
yeozongyao Apr 15, 2024
cfd1585
Merge pull request #204 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
49c7f48
Add UML diagrams
lordgareth10 Apr 15, 2024
ea5d2be
Merge pull request #205 from lordgareth10/master
lordgareth10 Apr 15, 2024
557fd42
Update PPP DG and junit test
liuzehui03 Apr 15, 2024
7f236e8
Update JUNIT
liuzehui03 Apr 15, 2024
0ba2be9
Fix merge fail issue
liuzehui03 Apr 15, 2024
370caac
Merge pull request #206 from liuzehui03/master
liuzehui03 Apr 15, 2024
24fe1ec
Added junit test for find-read and find-unread
liuzehui03 Apr 15, 2024
7b274bf
Merge pull request #207 from liuzehui03/master
liuzehui03 Apr 15, 2024
37f6238
Added JUNIT for find genre
liuzehui03 Apr 15, 2024
94c732e
Merge pull request #208 from liuzehui03/master
liuzehui03 Apr 15, 2024
712c2d1
Update UG
Joshuahoky Apr 15, 2024
dfb7676
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp
Joshuahoky Apr 15, 2024
506aa0e
Bug fix - rate 0 1 and label 0 1 will give a wrong error message
yeozongyao Apr 15, 2024
64ca366
Update UG and Ui help message
Joshuahoky Apr 15, 2024
9da2be0
Bug fix - testInvalidIndexOutofRange test fail
yeozongyao Apr 15, 2024
3848b30
Merge pull request #211 from Joshuahoky/master
Joshuahoky Apr 15, 2024
81b9039
Update help menu
yeozongyao Apr 15, 2024
86d816a
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp …
yeozongyao Apr 15, 2024
a80d49a
Merge pull request #209 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
8c8da3e
Update PPP
liuzehui03 Apr 15, 2024
b1e0630
Update PPP for zongyao
yeozongyao Apr 15, 2024
6b0cb79
Update PPP
liuzehui03 Apr 15, 2024
4bef2e7
Merge pull request #212 from liuzehui03/master
liuzehui03 Apr 15, 2024
5d8a3c9
Update PP, About Us and read me
yeozongyao Apr 15, 2024
7a8d578
Merge pull request #213 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
d280ed7
Bug Fixes: Corrected error messages
lordgareth10 Apr 15, 2024
4bf529b
Update DG
liuzehui03 Apr 15, 2024
b8abbe3
Merge pull request #215 from liuzehui03/master
liuzehui03 Apr 15, 2024
ca5e9cf
Update PPP
lordgareth10 Apr 15, 2024
932c875
Update PPP
liuzehui03 Apr 15, 2024
1d750b2
Merge pull request #214 from lordgareth10/master
lordgareth10 Apr 15, 2024
fcfcb12
Merge pull request #216 from liuzehui03/master
liuzehui03 Apr 15, 2024
3af4592
Update PPP
Joshuahoky Apr 15, 2024
9c10219
Merge pull request #217 from Joshuahoky/master
Joshuahoky Apr 15, 2024
e224239
Bug fix - replace split criteria as \\s+ instead of space
yeozongyao Apr 15, 2024
b8911ff
Update PPP
liuzehui03 Apr 15, 2024
cd7d18f
Merge pull request #219 from liuzehui03/master
liuzehui03 Apr 15, 2024
df95894
Merge pull request #218 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
8d3c479
Update UG
Joshuahoky Apr 15, 2024
6db89d7
Bug Fixes: Change error message and refactor help command
lordgareth10 Apr 15, 2024
9a02c5e
Refactor code for set-genre feature for code readability
yeozongyao Apr 15, 2024
55920fa
Merge pull request #220 from Joshuahoky/master
Joshuahoky Apr 15, 2024
936c109
Merge pull request #221 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
4145f9e
Update DG
lordgareth10 Apr 15, 2024
f09e119
Update UG
Joshuahoky Apr 15, 2024
8b8d0d5
Fix error messages
lordgareth10 Apr 15, 2024
9f3e950
Merge pull request #222 from Joshuahoky/master
Joshuahoky Apr 15, 2024
2f83c33
Checkstyle fixes
lordgareth10 Apr 15, 2024
2e2a319
Merge pull request #223 from lordgareth10/master
lordgareth10 Apr 15, 2024
4531ae6
Update UserGuide.md
yeozongyao Apr 15, 2024
fc2e81f
Update DG
liuzehui03 Apr 15, 2024
37be28c
Merge pull request #224 from liuzehui03/master
liuzehui03 Apr 15, 2024
14aba18
Update AboutUs.md
yeozongyao Apr 15, 2024
0f94ae2
Update yeozongyao.md
yeozongyao Apr 15, 2024
6f95e4d
Update About Us
yeozongyao Apr 15, 2024
0d9a1b1
Update About us
liuzehui03 Apr 15, 2024
bc88e68
Merge pull request #225 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
0c0481e
Update README.md
yeozongyao Apr 15, 2024
f0ed1ef
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F15-4/tp
liuzehui03 Apr 15, 2024
9801dbf
Update PPP
yeozongyao Apr 15, 2024
344520f
Update DG
liuzehui03 Apr 15, 2024
3ef2f65
Merge pull request #226 from liuzehui03/master
liuzehui03 Apr 15, 2024
468cb72
Update user guide
yeozongyao Apr 15, 2024
d822274
Merge pull request #227 from yeozongyao/branch-zongyao-codeenhancements
yeozongyao Apr 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ src/main/resources/docs/
.DS_Store
*.iml
bin/
data/books.txt
Bookbuddy.txt
*.log
BookBuddy.log.lck

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT
20 changes: 20 additions & 0 deletions BookBuddy.log.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Apr 01, 2024 6:16:13 PM seedu.bookbuddy.BookBuddy main
INFO: BookBuddy application started.
Apr 01, 2024 6:16:13 PM seedu.bookbuddy.BookBuddy getUserInput
INFO: Starting to get user input.
Apr 01, 2024 6:20:29 PM seedu.bookbuddy.BookBuddy main
INFO: BookBuddy application started.
Apr 01, 2024 6:20:29 PM seedu.bookbuddy.BookBuddy getUserInput
INFO: Starting to get user input.
Apr 03, 2024 12:51:38 PM seedu.bookbuddy.BookBuddy main
INFO: BookBuddy application started.
Apr 03, 2024 12:51:38 PM seedu.bookbuddy.BookBuddy getUserInput
INFO: Starting to get user input.
Apr 03, 2024 12:57:30 PM seedu.bookbuddy.parser.parservalidation.Exceptions validateCommandArguments
WARNING: The add Command requires a book title
Apr 03, 2024 12:57:30 PM seedu.bookbuddy.parser.parservalidation.Exceptions handleException
WARNING: Invalid command argument: The add Command requires a book title
Apr 03, 2024 12:57:30 PM seedu.bookbuddy.parser.ParserMain parseCommand
WARNING: Sorry but that is not a valid command. Please try again
Apr 03, 2024 12:57:30 PM seedu.bookbuddy.parser.parservalidation.Exceptions handleException
WARNING: Command is invalid: Sorry but that is not a valid command. Please try again or type: help
7 changes: 5 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ test {

testLogging {
events "passed", "skipped", "failed"
jvmArgs '-da'

showExceptions true
exceptionFormat "full"
Expand All @@ -29,12 +30,13 @@ test {
}

application {
mainClass.set("seedu.duke.Duke")
mainClass.set("seedu.bookbuddy.BookBuddy")
}

shadowJar {
archiveBaseName.set("duke")
archiveBaseName.set("bookbuddy")
archiveClassifier.set("")
archiveFileName = 'BookBuddy.jar'
}

checkstyle {
Expand All @@ -43,4 +45,5 @@ checkstyle {

run{
standardInput = System.in
enableAssertions = true
}
15 changes: 8 additions & 7 deletions docs/AboutUs.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# About us

Display | Name | Github Profile | Portfolio
--------|:----:|:--------------:|:---------:
![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)

Display | Name | Github Profile | Portfolio
--------|:-------:|:---------------------------------------:|:---------:
![](https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.nationalgeographic.com%2Fanimals%2Fmammals%2Ffacts%2Fdomestic-cat&psig=AOvVaw0h1oKdH4MW00nu2-jCVMT5&ust=1709970657610000&source=images&cd=vfe&opi=89978449&ved=0CBMQjRxqFwoTCOj10J6X5IQDFQAAAAAdAAAAABAI) | Joy Liu | [Github](https://github.com/liuzehui03) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | Joshua Ho | [Github](https://github.com/joshuahoky) | [Portfolio](docs/team/johndoe.md)
![](https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.thesprucepets.com%2Fabout-tuxedo-cats-554695&psig=AOvVaw0C_GqS3DVZWNcXkFONc6FM&ust=1709970666751000&source=images&cd=vfe&opi=89978449&ved=0CBMQjRxqFwoTCNi3kqOX5IQDFQAAAAAdAAAAABAE) | GARETH Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)
![](https://via.placeholder.com/100.png?text=Photo) | Zong Yao | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md)

175 changes: 170 additions & 5 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,194 @@
# Developer Guide

## Table of Contents
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good use of a Table of Contents to allow easy navigation of the DG!

* [Acknowledgements](#acknowledgements)
* [Design & Implementation](#design--implementation)
* * [Categorising the different books by their genres](#categorising-the-different-books-by-their-genres)
* * [BookList Class Component](#booklist-class-component)
* * [ParserMain Class Component](#parsermain-class-component)
* * [FileStorage Class Component](#filestorage-class-component)
* [Product Scope](#product-scope)
* * [Target user profile](#target-user-profile)
* * [Value proposition](#value-proposition)
* [User Stories](#user-stories)

## Acknowledgements

{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}

Reference to AB-3 Developer Guide
* [Source URL](https://se-education.org/addressbook-level3/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)
* Used as template to structure this DeveloperGuide
* Reference to AB-3 diagrams code

Reference to AB-3 diagrams code
* [Source URL](https://github.com/se-edu/addressbook-level3/tree/master/docs/diagrams)
* Used as reference to understand PlantUML syntax
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how you give credit to the sources you referenced!


## Design & implementation

{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could remove the placeholder text so that it's clearer where the Design and Implementation section begins


### Categorising the different books by their genres
This functionality enables the categorization of books into distinct groups based on their genres, facilitating better
organization and tracking. The implementation of this feature involves interactions across multiple classes within the
system.

#### Overview
The process of categorizing books by genre is a multistep operation that involves the following classes:
1. `ParserGenre`: This class contains methods that handle the categorization of books.
2. `BookGenre`: Individual book objects are updated with their respective genres directly in this class.
3. `ParserMain`: This class is responsible for parsing the input command to extract the specific index and genre.

#### Architecture-Level Design:

- The book management system is structured using a layered architecture model, comprising the UI layer, the command
parser layer, and the data model layer.
- The `set-genre` feature is primarily situated in the command parser layer but interacts closely with the data model
layer to update the genre of a book.

#### Component-Level Design:

- `UI Layer`: Receives input from the user and displays the results of operations. It's where the user's request to set
a genre starts and ends with feedback.
- `ParserMain` (Command Parser Layer): Acts as the central hub for command processing, determining the type of command
and delegating to the specific parser.
- `ParserGenre` (Command Parser Layer): Specializes in handling the set-genre command. It prompts the user for inputs
and validates them.
- `BookList` (Data Model Layer): Maintains the list of books and genres. It's queried to ensure the book index is valid
and to retrieve or update the list of genres.
- `BookGenre` (Data Model Layer): Provides the functionality to set the genre of a book in the `BookList`.

#### Implementation Details:

- Upon invoking the `set-genre` command, `ParserMain` interprets the command and forwards it to `ParserGenre`.
`ParserGenre` then guides the user through selecting an existing genre or adding a new one, ensuring valid inputs at
each step.
- The chosen genre is then applied to the specified book through `BookGenre`, which interfaces with `BookList` to make
the update.
- Throughout this process, `Ui` is called upon to display messages, guiding the user and confirming the successful
update.

#### Rationale for Design:

- The command pattern used allows for easy addition of new commands and features without altering existing code
structures, adhering to open/closed principles.
- The clear separation of concerns makes the system robust, with each component focusing on a single responsibility,
enhancing maintainability and scalability.

#### Alternatives Considered:

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good display of alternatives considered!

- An embedded approach, where genre setting logic is part of a larger class managing all book attributes, was
considered. However, this was rejected due to potential scalability issues and difficulty in maintaining code.

![SetGenreSequenceDiagram.png](UML_diagrams/SetGenreSequenceDiagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Is this correct? Should it be returning any value(eg genres)?


### BookList Class Component
The `BookList` class is responsible for all actions involving the list of books that the user has.

#### Overview

The `BookList` class contains one protected static ArrayList named books. This ArrayList will contain Book objects. The methods in
The `BookList` class contains one protected static ArrayList named books. This ArrayList will contain Book objects.
The methods in this class all change the ArrayList according to the command given.

#### Detailed Workflow
Apart from the constructor, the methods of this class like getSize(), addBook() all either return a piece of
information about the ArrayList,
the book object that is selected or change an attribute of the ArrayList or selected book object. For the
printAllBooks() method, the ArrayList
is iterated through, with the details of each book being printed out according to the toString() format of each book.
Other than that, methods like
markDoneByIndex() and markUndoneByIndex() both will change the isRead() attribute of the book of the given index. This
class handles errors related to the
ArrayList, throwing exceptions for invalid indexes and invalid actions based on current state (if trying to mark a book
that is already read).

#### Implementation and Rationale

### ParserMain Class Component
The `ParserMain` class is responsible for parsing any input from the user and making sense of them to execute the correct commands.

#### Overview
By importing predefined string constants from `CommandList` class representing the valid commands, the `ParserMain` class
parses the input from a user using the `parseCommand` method. The class diagram below shows how `ParserMain` interacts with other
classes.
![ParserMain.png](UML_diagrams/ParserMain.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Perhaps you could remove the icons in the class diagrams, as well as the attributes icons.


#### Detailed Workflow
Whenever input from the user is detected by the program, the `ParserMain` class will split the command into 2 parts, with the first part
containing the command and the second containing details of the command (if present). The command entered is then evaluated using a
switch statement, with the value of it being compared to the values of each case. In the case of a match, the `ParserMain` class will then
execute the respective action associated with that command by calling other classes from the program such as `BookDisplay` or `ParserAdd`.
This class also handles errors and exceptions associated with the users input. For example, if the user were to give the command `mark` without
specifying an index for which book to mark, or gives a negative number, an appropriate error message will be shown and the command will be rendered
invalid.

The sequence diagram below shows how user input is processed to carry out the add book command.
![AddCommand.png](UML_diagrams/AddCommand.png)

#### Implementation and Rationale
The `ParserMain` class incorporates exception handling to detect invalid or unrecognized commands. This allows the program to continue running
while prompting the user for valid input

By abstracting out the parsing functionality of BookBuddy into a separate `ParserMain` class, the complexity of parsing
user input is removed from the main code. It is instead replaced by a simple interface for the user to work with, adhering to the abstraction
concept of object-oriented programming.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good application of OOP concepts!


### FileStorage Class Component
The `FileStorage` class is crucial for managing file operations in BookBuddy, such as reading from and writing to files,
thereby ensuring data is saved for future sessions.

#### Overview
The `FileStorage` class interacts with the `BookList` and `BookListModifier` classes to load and save book data. It ensures that
the data directory and file exist upon initialization and provides methods for reading from and writing to the data file.
The class diagram below illustrates the relationship between `FileStorage` and other classes.

![FileStorage.png](UML_diagrams/FileStorage.png)

#### Detailed Workflow
Upon instantiation, the `FileStorage` class checks for the existence of a predefined directory (./data) and file (books.txt),
creating them if they do not exist. Existing data, if any, is read from the file and BookBuddy's BookList is initialized
with this data. For reading data, it scans each line of the file, converting each line of text into instances of `Book` with
the appropriate details. For saving data, it iterates through the BookList, converting each book into a string format suitable
for file storage and writes this to the file.

#### Implementation and Rationale
The creation of the `FileStorage` class ensures that all features related to reading and writing data is taken away from other
parts of the application. This separation makes the `FileStorage` class solely responsible for these features, adhering to
the Single Responsibility Principle.

## Product scope
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Could you give more elaborations on user stories?

### Target user profile

{Describe the target user profile}
Users that want an all-in-one app to track the books read, progress for each book.
Progress for each book can be recorded according to the number of pages read.
Users will be able to sort books according to genre.
Users can sort books according to Read or Unread.
Users will also be able to search for books via keywords in book titles

### Value proposition

{Describe the value proposition: what problem does it solve?}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could add a value proposition so that developers can understand at a glance what your program can offer.


## 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 |
| v1.0 | user | add books to a list | |
| v1.0 | user | remove books from a list | |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could add the part for "so that I can" to make it complete.

| v1.0 | user | see the list of books that are read or unread | I can keep track of my reading progress |
| v1.0 | user | change the status of a book | mark a book when I have finished reading it |
| v2.0 | user | add a summary to a book | remember what the book is about |
| v2.0 | user | provide a label for a book | provide my own personal thoughts on the book |
| v2.0 | user | provide a genre for a book | categorise books according to their genre |
| v2.0 | user | provide a rating for a book | know whether a book was good or not |
| v2.0 | user | sort books by their rating | recall which are the best books that I have read |
| v2.0 | user | view all information about a book | remember to add missing information (if any) |
| v2.0 | user | search for books according to keywords | find a book quickly without going through the entire list |
| v2.0 | user | filter books by genre | see all the books in a particular genre |


## Non-Functional Requirements

Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Duke
# BookBuddy

{Give product intro here}

Expand Down
22 changes: 22 additions & 0 deletions docs/UML_Files/AddCommand.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
@startuml

User -> Parser : parseCommand(input, books)
activate Parser

alt input is ADD_COMMAND
Parser -> ParserAdd : executeParseAdd(books, inputArray)
activate ParserAdd
ParserAdd --> Parser : CommandExecuted
deactivate ParserAdd
alt other commands
Parser -> Parser : handleOtherCommands()
else unsupported command
Parser -> Exceptions : handleException(e, command, inputArray)
activate Exceptions
Exceptions --> Parser : ExceptionHandled
deactivate Exceptions
end

Parser --> User : getUserInput(books)
deactivate Parser
@enduml
21 changes: 21 additions & 0 deletions docs/UML_Files/FileStorage.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@startuml
class FileStorage {
- FILE_NAME : String = "books.txt"
- FILE_DIRECTORY : String = "./data"
- FILE_PATH : String = FILE_DIRECTORY + '/' + FILE_NAME

+FileStorage(books : BookList)
+readData(books : BookList, file : File) : void
+saveData(books : BookList) : void
}

class BookList {
}

class BookListModifier {
+addBookFromFile(books : BookList, line : String) : void
}

FileStorage --> BookList : uses
FileStorage --> BookListModifier : uses
@enduml
50 changes: 50 additions & 0 deletions docs/UML_Files/ParserMain.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
@startuml
scale 2000 * 1500
left to right direction
class ParserMain {
+parseCommand(input : String, books : BookList) : void
}

class ParserCommands {
+execute(books : BookList, inputArray : String[]) : void
}

class BookList {
- static availableGenres : List<String>
- books : ArrayList<BookMain>
+BookList()
+getAvailableGenres() : List<String>
+getBooks() : List<BookMain>
+getSize() : int
+getBook(index : int) : BookMain
}

class BookDisplay {
+printAllBooks(books : BookList) : void
}

class Ui {
+helpMessage() : void
}

class Exceptions {
{static} +validateCommandArguments(inputArray : String[], requiredArgs : int, errorMessage : String) : void
{static} +handleException(e : Exception, command : String, inputArray : String[]) : void
}

class BookRating {
+printBooksByRating(books : BookList) : void
}

class CommandList {
{static} ADD_COMMAND : String = "add"
}

ParserMain --> ParserCommands : uses
ParserMain --> BookList
ParserMain --> BookDisplay : uses
ParserMain --> Ui : uses
ParserMain --> Exceptions : uses
ParserMain --> BookRating : uses
ParserMain --> CommandList : uses
@enduml
Loading
Loading