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-T18-2] FinancialPlanner #17

Open
wants to merge 711 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
711 commits
Select commit Hold shift + click to select a range
b5ba1de
Change method name for clarity
Oct 31, 2023
e7355e4
Update DG with recur feature
Oct 31, 2023
bedd062
Add recur class and sequence diagrams
Oct 31, 2023
9442c88
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Oct 31, 2023
7edf450
Merge branch 'master' into Branch-UpdateDG
Oct 31, 2023
4257110
Solve suggestions of Minwei
hshiah Oct 31, 2023
0aa5efa
Update DG content page
Oct 31, 2023
8ef4691
Update UG explaining the meaning of cashflow
Oct 31, 2023
425cf72
Solve minor errors.
hshiah Oct 31, 2023
1642706
Merge pull request #134 from hshiah/hshiah
hshiah Oct 31, 2023
6ac95c6
Add some fix to DG and UG
wwweert123 Nov 1, 2023
59beb3d
Merge branch 'master' into VisDG
wwweert123 Nov 1, 2023
f2077fc
Update DG
Nov 1, 2023
53cc8ca
Fix typo to be in camelCase
Nov 1, 2023
be61c28
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 1, 2023
8e6bc95
Merge branch 'master' into Branch-UpdateDG
Nov 1, 2023
35f10a3
Merge pull request #135 from NeoMinWei/Branch-UpdateDG
NeoMinWei Nov 1, 2023
660f302
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 1, 2023
c9b08fc
FIx formatting error in UG
Nov 1, 2023
3813917
Merge pull request #140 from NeoMinWei/Branch-UGquickfix
NeoMinWei Nov 1, 2023
5d2940d
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 1, 2023
d90ccc5
Finish all user stories for v2.0
hshiah Nov 1, 2023
2ecb578
Add help command
YFshadaow Nov 1, 2023
3f80f21
Update EXPECTED.TXT for UI testing
YFshadaow Nov 1, 2023
27418e4
Update src/main/java/seedu/financialplanner/commands/MarkGoalCommand.…
hshiah Nov 1, 2023
410558c
Update src/main/java/seedu/financialplanner/commands/MarkGoalCommand.…
hshiah Nov 1, 2023
d9293b5
Update ExpenseType.java
hshiah Nov 1, 2023
01e764d
Update MarkGoalCommand.java
hshiah Nov 1, 2023
a026d6c
Update src/main/java/seedu/financialplanner/commands/DeleteGoalComman…
hshiah Nov 1, 2023
0544e3f
Merge pull request #143 from hshiah/temp
hshiah Nov 1, 2023
62ab3bf
Merge pull request #141 from wwweert123/VisDG
wwweert123 Nov 1, 2023
ac5f45a
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp …
YFshadaow Nov 1, 2023
3eab7c3
Resolve merge conflicts
YFshadaow Nov 1, 2023
c8298c3
Merge pull request #142 from YFshadaow/help-command
YFshadaow Nov 1, 2023
810c718
Fix DG sequence diagram for cat and vis
wwweert123 Nov 2, 2023
4392054
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 2, 2023
3590c87
Update UG. Fix some minor errors of reminder and goal. Update the sav…
hshiah Nov 2, 2023
2447cba
Fix code according to DG
wwweert123 Nov 2, 2023
47187ce
Update WishList.java
hshiah Nov 3, 2023
e249eca
Update ReminderList.java
hshiah Nov 3, 2023
3f4327a
Merge pull request #151 from hshiah/hshiah
hshiah Nov 3, 2023
d95af1b
Merge branch 'master' into VisDG
wwweert123 Nov 3, 2023
ad69fe0
Merge pull request #150 from wwweert123/VisDG
wwweert123 Nov 3, 2023
2815bb5
Remove long method parameters in recur sequence and class diagrams
Nov 4, 2023
03c556b
Resolve spacing issues in headers
Nov 4, 2023
9abcc2f
Add description for the types accepted in add income and expense
Nov 4, 2023
c27e5dd
Fix bugs
ryan1604 Nov 4, 2023
26bbcd4
Add maximum/minimum value exception
Nov 4, 2023
fd935ef
Add trimming of arguments from input
Nov 4, 2023
b75a589
Add listing of total balance in list command and removing of extra sp…
Nov 4, 2023
6611146
Update diagrams, DG and UG
ryan1604 Nov 4, 2023
51480db
Add change for loading watchlist with more than 5 stocks, initallize …
wwweert123 Nov 4, 2023
ed086fe
Merge branch 'master' into FixBugsEnhanceDGUG
wwweert123 Nov 4, 2023
e0869ff
Update UG
ryan1604 Nov 4, 2023
1c50478
Update test file
ryan1604 Nov 4, 2023
0a1278b
Create new constructor for adding base stocks
wwweert123 Nov 4, 2023
9430c21
Update reset budget diagram
ryan1604 Nov 4, 2023
8ea9b49
Fix typo
ryan1604 Nov 4, 2023
2902393
Add mechanism to clean up watchlist as much as possible to remove non…
wwweert123 Nov 4, 2023
f008034
Add to UG to warn user
wwweert123 Nov 4, 2023
1f63e8d
Add check for whether null stocks are passed before printing
wwweert123 Nov 4, 2023
466e04d
Add saving of watchlist after watchlist command
wwweert123 Nov 4, 2023
8b56635
Add attempt of removing of both normal stock and its uppercase form
wwweert123 Nov 4, 2023
4270383
Add details to UG
wwweert123 Nov 4, 2023
6edb7ea
Add printing of acknowledgement to APIs
wwweert123 Nov 4, 2023
0146afb
Add PPP to be completed
ryan1604 Nov 4, 2023
d7e4477
Add instructions for adding stock using JSON
wwweert123 Nov 4, 2023
c1af3ef
Add additonal checks for adding stock and handle exception for stock …
wwweert123 Nov 4, 2023
52300e6
Add to UG q and A
wwweert123 Nov 4, 2023
1bafe66
Fix bug
Nov 4, 2023
98daeac
Fix checkstyle
wwweert123 Nov 4, 2023
11d1174
Fix code according to reviewer
wwweert123 Nov 4, 2023
8d7db09
Fix typo
wwweert123 Nov 5, 2023
f9593b3
Add return in Budget
ryan1604 Nov 5, 2023
6073833
Merge pull request #191 from ryan1604/branch-bugfix
ryan1604 Nov 5, 2023
e6cc5c4
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 5, 2023
a8d8d26
Merge branch 'master' into Branch-PEBugFix
Nov 5, 2023
058defc
Make changes according to PR reviews
Nov 5, 2023
07b02e6
Add trimming for commands
wwweert123 Nov 5, 2023
265b96c
Add padding to watchlist command
wwweert123 Nov 5, 2023
4927653
Add on to UG
wwweert123 Nov 5, 2023
12a0724
Add PPP
wwweert123 Nov 5, 2023
5865c8e
Merge branch 'master' into FixBugsEnhanceDGUG
wwweert123 Nov 5, 2023
f988a32
Change colour of message printed
wwweert123 Nov 5, 2023
51f8f51
Merge pull request #193 from wwweert123/FixBugsEnhanceDGUG
wwweert123 Nov 5, 2023
5a5dc49
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 5, 2023
13f5f72
Merge branch 'master' into Branch-PEBugFix
Nov 5, 2023
03c0c58
Add PPP
Nov 5, 2023
a93e83d
Rename PPP file to be in lower case
Nov 5, 2023
7694949
Merge pull request #192 from NeoMinWei/Branch-PEBugFix
NeoMinWei Nov 6, 2023
f07b5b0
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 6, 2023
24f5843
Remove activation bars for ref sd
ryan1604 Nov 6, 2023
3a11b37
Merge branch 'master' into branch-bugfix
ryan1604 Nov 6, 2023
08d0112
Update overview command
ryan1604 Nov 6, 2023
9a4f943
Add JUnit testing for DeleteCashflowCommand
Nov 6, 2023
bd8a8bf
Add JUnit test for Cashflow
Nov 6, 2023
2df3f93
Update JUnit tests in CashflowList and AddCashflowCommand to include …
Nov 6, 2023
d9bd60d
Add fullstops to exception messages
Nov 6, 2023
72a16ae
Fix JUnit
Nov 6, 2023
3a0fb32
Rename method to follow camelCase
Nov 6, 2023
f52f1e1
Add javadoc comments
Nov 7, 2023
52da987
Update text ui test
Nov 7, 2023
e2ebbe9
Add fullstop to error message
Nov 7, 2023
c3c411b
Refactor help command structure:
YFshadaow Nov 7, 2023
932b6e9
Update DG and UG
ryan1604 Nov 7, 2023
700392d
Fix bug
ryan1604 Nov 7, 2023
578564c
Update Architecture Diagram and fix typo
ryan1604 Nov 8, 2023
878d782
Merge pull request #194 from NeoMinWei/Branch-FinalJunit
NeoMinWei Nov 8, 2023
727ab4b
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 8, 2023
fba7732
Merge pull request #196 from ryan1604/branch-bugfix
ryan1604 Nov 8, 2023
2f2a764
Add javadoc to classes and methods
wwweert123 Nov 8, 2023
8660d42
Add DG value proposition and user profile
wwweert123 Nov 8, 2023
e3d3d00
Add user stories
wwweert123 Nov 8, 2023
1cbae2b
Add term to glossary
wwweert123 Nov 8, 2023
e901e67
Add checkstyle fixes
wwweert123 Nov 8, 2023
dc31f33
Add simple manual testing and fix bugs
wwweert123 Nov 9, 2023
cae5827
Update contributions for PPP
wwweert123 Nov 9, 2023
a11d406
Merge pull request #197 from wwweert123/javadocNDG
wwweert123 Nov 9, 2023
abf2f8c
Merge branch 'master' of https://github.com/YFshadaow/tp into help-co…
YFshadaow Nov 9, 2023
c3ed577
Resolve merge conflicts
YFshadaow Nov 9, 2023
2bf3be5
Finish all command usage and example usage. Add example usage to help…
YFshadaow Nov 9, 2023
c936fb5
Remove comment from build.gradle
YFshadaow Nov 9, 2023
49df5b0
Fix bugs
hshiah Nov 9, 2023
5d6c505
Add find and help commands to user guide
YFshadaow Nov 9, 2023
d579e32
Fix spacing in BudgetCommand.java
YFshadaow Nov 9, 2023
0543ea4
Fix usage of add cashflow command
YFshadaow Nov 9, 2023
56a6742
Fix incorrect exception message due to invocation target exception ca…
YFshadaow Nov 9, 2023
2a25f48
Enhancement of reminder
hshiah Nov 9, 2023
c9cc538
Add list command to UG
Nov 10, 2023
3684545
Fix date format
hshiah Nov 10, 2023
b68d1c2
Fix typo
Nov 10, 2023
ce4b754
Fix incorrect directory in UG
Nov 10, 2023
8f06d05
Merge pull request #200 from YFshadaow/help-command-refactor-and-bug-…
YFshadaow Nov 10, 2023
cac53ac
Merge branch 'master' into hshiah
hshiah Nov 10, 2023
320aa07
Merge pull request #198 from hshiah/hshiah
hshiah Nov 10, 2023
0efce8f
Update readme and aboutus
ryan1604 Nov 10, 2023
cd6c82e
Fix bugs of loading and saving reminder
hshiah Nov 10, 2023
6f23dec
Fix coding style
hshiah Nov 10, 2023
e0b2656
Merge pull request #203 from hshiah/hshiah
hshiah Nov 10, 2023
45e97d6
Merge pull request #202 from ryan1604/branch-ug
ryan1604 Nov 10, 2023
1059aa1
Fix mistakes
wwweert123 Nov 10, 2023
69016f4
Merge pull request #201 from NeoMinWei/Branch-FinalUG
ryan1604 Nov 10, 2023
346f3c7
Solve slf4j binding warning
YFshadaow Nov 10, 2023
e0801c3
Merge pull request #204 from YFshadaow/fix-logger-binding
YFshadaow Nov 10, 2023
593c2db
Fix UG and DG
ryan1604 Nov 11, 2023
aba804b
Merge pull request #205 from ryan1604/branch-bugfix
ryan1604 Nov 11, 2023
3c5ddee
Fix bugs
hshiah Nov 11, 2023
4b8495e
Fix addstock
wwweert123 Nov 11, 2023
19fbd5c
Merge pull request #207 from wwweert123/javadocNDG
wwweert123 Nov 11, 2023
3eda51d
Update UG
hshiah Nov 11, 2023
21ac550
Merge pull request #206 from hshiah/hshiah
hshiah Nov 11, 2023
eb6d563
Add mechanism to tell user that he has input the values wrongly in js…
wwweert123 Nov 11, 2023
3c77204
Add hashing of values to ensure nobody tampers with the json file
wwweert123 Nov 11, 2023
97d75b5
Update UG
wwweert123 Nov 11, 2023
1324840
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 11, 2023
fab38b1
Fix date format in reminder
Nov 11, 2023
07636fc
Add exception thrown when impossible dates are detected
Nov 11, 2023
a207e78
Convert parameter to lowercase for categorizer and visualizer
wwweert123 Nov 11, 2023
8bde6d4
Change load watchlist to take take file path as parameter
wwweert123 Nov 11, 2023
4f29a53
Convert to uppercase when passing stock code into Stock constructor
wwweert123 Nov 11, 2023
b83a06c
Add junit test for watchlist
wwweert123 Nov 11, 2023
31126ff
Add junit test for categorizer and visualizer
wwweert123 Nov 11, 2023
3a03ae7
Add return value for javadoc
wwweert123 Nov 11, 2023
51cedca
Fix typo
wwweert123 Nov 11, 2023
2bdb914
Update PPP
Nov 11, 2023
63c26c2
Merge branch 'master' into javadocNDG
wwweert123 Nov 11, 2023
997c841
Fix bug
Nov 11, 2023
f836550
Fix checkstyle
wwweert123 Nov 11, 2023
5a83f4f
Add new line
wwweert123 Nov 11, 2023
accfb52
Disable test on linx
wwweert123 Nov 11, 2023
76fe341
Merge pull request #208 from wwweert123/javadocNDG
wwweert123 Nov 11, 2023
2ca87af
Update UG
ryan1604 Nov 12, 2023
9192e6c
Add mechanism to disallow adding stock with other fields
wwweert123 Nov 12, 2023
83db9ed
Add setting of fetch time even for invalid stocks
wwweert123 Nov 12, 2023
2a407e4
Reorder UG
ryan1604 Nov 12, 2023
26ea23a
Fix displaying of wrong balance when recurring cashflows are added
Nov 12, 2023
38075f2
Add error handling for recur value exceeding maximum int value
Nov 12, 2023
95babe9
Update user guide
Nov 12, 2023
2afa997
Add error handling for index exceeding max int value
Nov 12, 2023
7b714b0
Update Junit
Nov 12, 2023
efabe5a
Delete note for income type in UG
ryan1604 Nov 12, 2023
94e1308
Last Changes
wwweert123 Nov 12, 2023
4b44100
Fix Vis diagrams
wwweert123 Nov 12, 2023
fadf088
Add watchlist feature to DG
wwweert123 Nov 12, 2023
3612cc8
Add to table of contents
wwweert123 Nov 12, 2023
614e9c9
Merge pull request #210 from ryan1604/branch-bugfix
ryan1604 Nov 12, 2023
36e7556
Update PPP
wwweert123 Nov 12, 2023
e19808b
Fix bugs
hshiah Nov 12, 2023
86e7b72
Fix checkstyle
hshiah Nov 12, 2023
579a5e1
Update Diagrams
wwweert123 Nov 12, 2023
ff1bffa
Update javadoc
hshiah Nov 12, 2023
63f5765
Fix checkstyle
hshiah Nov 12, 2023
1bdd7d3
Merge pull request #209 from NeoMinWei/Branch-ReminderDate
ryan1604 Nov 12, 2023
d8b6e07
Add activation bars to sequence diagrams
Nov 12, 2023
f82fcc7
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp …
Nov 12, 2023
7a20e0f
Fix table of content
wwweert123 Nov 12, 2023
3737520
Add activation diagram
wwweert123 Nov 12, 2023
2e591a2
Change back
wwweert123 Nov 12, 2023
d6dc02d
Merge pull request #211 from wwweert123/javadocNDG
wwweert123 Nov 12, 2023
e7c0591
Add manual testing
wwweert123 Nov 12, 2023
70b7704
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp …
Nov 12, 2023
587ce36
Fix typo
wwweert123 Nov 12, 2023
941be64
Merge pull request #214 from wwweert123/javadocNDG
wwweert123 Nov 12, 2023
6721762
Add manual testing
Nov 12, 2023
85c469f
Update manual testing
Nov 12, 2023
fad742f
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp …
Nov 12, 2023
0d03642
Add manual testing
ryan1604 Nov 12, 2023
889370d
Finished test and fix bugs.
hshiah Nov 12, 2023
55ae6a6
Merge pull request #213 from NeoMinWei/Branch-ReminderDate
NeoMinWei Nov 12, 2023
c417ab5
Merge branch 'master' into branch-bugfix
ryan1604 Nov 12, 2023
65663a8
Merge pull request #215 from ryan1604/branch-bugfix
ryan1604 Nov 12, 2023
c1e591c
Final update
hshiah Nov 12, 2023
558f765
Merge branch 'master' into hshiah
hshiah Nov 12, 2023
7cc98dc
Update SetGoalCommandTest.java
hshiah Nov 12, 2023
57b5961
Update AddReminderCommandTest.java
hshiah Nov 12, 2023
ff4a734
Update ReminderListCommand.java
hshiah Nov 13, 2023
829d36a
Merge pull request #212 from hshiah/hshiah
hshiah Nov 13, 2023
7b3be7b
Fix bug in UGDG
ryan1604 Nov 13, 2023
ea272b6
Update PPP
ryan1604 Nov 13, 2023
730afd0
Fix broken link
wwweert123 Nov 13, 2023
8cc3fec
Add fix that you can only add stocks in capital letters using file
wwweert123 Nov 13, 2023
9bd2f73
Merge pull request #216 from ryan1604/branch-bugfix
ryan1604 Nov 13, 2023
d4d6562
Merge pull request #217 from wwweert123/changesDG
wwweert123 Nov 13, 2023
875b0ab
Fix broken link
wwweert123 Nov 13, 2023
1f3e3e5
Merge pull request #218 from wwweert123/changesDG
wwweert123 Nov 13, 2023
1852642
Add about us
wwweert123 Nov 13, 2023
fbeda55
Merge pull request #219 from wwweert123/changesDG
wwweert123 Nov 13, 2023
9b7a4b7
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 13, 2023
a7bbd83
Fix DG and UG
wwweert123 Nov 13, 2023
6f57dc6
Fix
wwweert123 Nov 13, 2023
1e59dff
fix typo
wwweert123 Nov 13, 2023
4a5e4e4
Merge pull request #220 from wwweert123/changesDG
wwweert123 Nov 13, 2023
6bff288
Fix bug in UG
ryan1604 Nov 13, 2023
2a15144
Merge pull request #221 from ryan1604/branch-bugfix
ryan1604 Nov 13, 2023
3a324b7
Add fix
wwweert123 Nov 13, 2023
99b8c54
Merge branch 'master' of https://github.com/AY2324S1-CS2113-T18-2/tp
Nov 13, 2023
1c915c4
Merge pull request #222 from wwweert123/changesDG
wwweert123 Nov 13, 2023
e4f7d1e
Update add cashflow explanations
Nov 13, 2023
0b7dbb5
Merge pull request #223 from NeoMinWei/Branch-DGQuickFix
NeoMinWei Nov 13, 2023
9c15ad8
Fix bug
ryan1604 Nov 13, 2023
bdb553a
Fix bug
ryan1604 Nov 13, 2023
30ef4ff
Merge pull request #224 from ryan1604/branch-bugfix
ryan1604 Nov 13, 2023
c4a964a
Final Final FInal Final changes
wwweert123 Nov 14, 2023
2de04b7
Merge pull request #225 from wwweert123/changesDG
wwweert123 Nov 14, 2023
80da84b
Add project portfolio page
YFshadaow Nov 14, 2023
e97054c
Merge pull request #226 from YFshadaow/yfshadaow-project-portfolio-page
YFshadaow Nov 14, 2023
be44706
Update aboutus page
YFshadaow Nov 14, 2023
708646a
Merge pull request #227 from YFshadaow/yfshadaow-project-portfolio-page
YFshadaow Nov 14, 2023
878b5ac
Remove the non-existing John Doe from AboutUs.md
YFshadaow Nov 14, 2023
3b2bd80
Merge pull request #228 from YFshadaow/yfshadaow-project-portfolio-page
YFshadaow Nov 14, 2023
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT
data/
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ repositories {
dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0'
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
implementation group: 'org.knowm.xchart', name: 'xchart', version: '3.8.5'
implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1'
}

test {
Expand All @@ -29,7 +33,7 @@ test {
}

application {
mainClass.set("seedu.duke.Duke")
mainClass.set("seedu.financialplanner.FinancialPlanner")
}

shadowJar {
Expand All @@ -43,4 +47,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://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) | Ryan Chua | [Github](https://github.com/ryan1604) | [Portfolio](docs/team/ryanchua.md)
![](https://via.placeholder.com/100.png?text=Photo) | Neo Min Wei | [Github](https://github.com/NeoMinWei) | [Portfolio](docs/team/NeoMinWei.md)
![](https://via.placeholder.com/100.png?text=Photo) | Frederick | [Github](https://github.com/) | [Portfolio](docs/team/frederick.md)

291 changes: 291 additions & 0 deletions docs/DeveloperGuide.md

Choose a reason for hiding this comment

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

Overall very good DG, very precise and in depth analysis of the code and detailed description.
Maybe could use a single and coherent way of using bullet points (right now the DG contains >>, 1), 1. and Step 1). This could make the DG look as if actually written by a single person.

Original file line number Diff line number Diff line change
@@ -1,13 +1,304 @@
# Developer Guide

## Table of contents

Choose a reason for hiding this comment

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

Good use of indentation to organize the Table of Contents.
However, since there are 3 types of indentation, could there be a better way of labelling each line? say 1.1.1?
Just a small suggestion.


* [Acknowledgements](#acknowledgements)
* [Design & implementation](#design--implementation)
* [Storage Component](#storage-component)
* [Design considerations](#design-considerations)
* [Visualization Feature](#visualization-feature-)
* [Class diagram](#class-diagram)
* [Sequence diagram](#sequence-diagram-)
* [Add Income/Expense Feature](#add-incomeexpense-feature)
* [Class Diagram](#add-incomeexpense-class-diagram)
* [Sequence Diagram](#add-incomeexpense-sequence-diagram)
* [Recurring Cashflow Feature](#recurring-cashflow-feature)
* [Class Diagram](#recurring-cashflow-class-diagram)
* [Sequence Diagrams](#recurring-cashflow-sequence-diagrams)
* [Budget Feature](#budget-feature)
* [Set and update budget](#set-and-update-budget)
* [Delete budget](#delete-budget)
* [Reset budget](#reset-budget)
* [View budget](#view-budget)
* [Product Scope](#product-scope)
* [Target user profile](#target-user-profile)
* [Value proposition](#value-proposition)
* [User Stories](#user-stories)
* [Non-Functional Requirements](#non-functional-requirements)
* [Glossary](#glossary)
* [Instructions for manual testing](#instructions-for-manual-testing)

## Acknowledgements

Choose a reason for hiding this comment

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

Comprehensive acknowledgement of others.
Properly citing third-party libraries and tools ensures transparency and gives credit to the original creators.
This section showcases the developer's integrity and understanding of open-source norms.


**Xchart (A Simple Charting Library for Java)**
- author: KNOWN

Choose a reason for hiding this comment

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

Maybe there is a typo here: shouldn't it be author: KNOWM?

Choose a reason for hiding this comment

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

THanks for spotting!

- source: [https://knowm.org/open-source/xchart/](https://knowm.org/open-source/xchart/)

**JSON Simple (simple Java toolkit for encoding and decoding JSON)**
- author: Yidong Fang (Google Code)
- source: [https://code.google.com/archive/p/json-simple/](https://code.google.com/archive/p/json-simple/)

**Apache Common Langs 3**
- author: Apache Commons
- source: [https://commons.apache.org/proper/commons-lang/](https://commons.apache.org/proper/commons-lang/)

**Alpha Vantage Stock Market API**
- author: Alpha Vantage
- source: [https://www.alphavantage.co/](https://www.alphavantage.co/)

**Gson Java library**
- author: Google
- source: [https://github.com/google/gson](https://github.com/google/gson)

**Financial Modeling Prep Stock API**
- author: Financial Modeling Prep
- source: https://site.financialmodelingprep.com/

**round() method in Cashflow.java**
- author: mhadidg
- source: [https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places]()

**capitalize() method in Cashflow.java**
- author: Nick Bolton
- source: [https://stackoverflow.com/questions/1892765/how-to-capitalize-the-first-character-of-each-word-in-a-string]()

**DG adapted from**

* [Addressbook-level3](https://github.com/se-edu/addressbook-level3)

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

## Design & implementation

Choose a reason for hiding this comment

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

Perhaps it would be good to have a Architecture Diagram showcasing your overall design and mechanism of FinancialPlanner. This would give the Developer their needed context should they want to further implement other features to integrate into your program


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

Choose a reason for hiding this comment

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

Maybe you could add a brief introduction and overview of your Financial Planner, explaining the goal and purpose as well as its rough overall design in form of an arbitrary architecture diagram. This would also allow further developers an immediate insight into your product and align them with your ideas and implementations from the start.


### Storage Component

Choose a reason for hiding this comment

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

The relationship between Storage and SaveData/LoadData seems slightly confusing.
Typically, if Storage is a class providing functionalities like saving and loading, it may have methods for those, rather than being connected to abstract classes representing those actions.
Consider redefining these relationships for clarity.

A clearer distinction or some elaboration on what differentiates Cashflow and Budget would be beneficial.


API: `Storage.java`

![](images/Storage.png)

* The storage component loads data from the saved text files when the application starts, and saves the data to the
text files when the application exits.
* The storage class uses the static methods in LoadData and SaveData to load and save data respectively.
* The `load` method in LoadData reads the `data.txt` file and loads any existing Income, Expense and Budget into the application.
* The `save` method in SaveData saves all Incomes, Expenses and existing Budget into the `data.txt` file.

#### Design considerations:

* There are 2 main ways to implement the storage, one is to save the data after every command, and the other is to save
Copy link

Choose a reason for hiding this comment

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

Great job explaining the pros and cons of the design consideration. Perhaps you could consider explaining to the reader why you chose to implement it this way over the other instead of just stating what you chose.

the data one upon exiting the program with the `exit` command.
* Saving the data once upon exit (Currently implemented):
* Advantage: Better efficiency and performance of the program.
* Disadvantage: If the program crashes or exits incorrectly, data will not be saved.
* Saving the data after every command:

Choose a reason for hiding this comment

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

Perhaps it should be specified whether this way is currently implemented or not (as is done for the other option) to keep the considerations coherent. Right now I assume it is not, but I would still not be sure.

* Advantage: Changes are saved after every command.
* Disadvantage: Executing command might slow down the program when there is a large amount of data to be saved.

### Visualization Feature

Choose a reason for hiding this comment

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

Kudos for integrating Xchart!
By having the visual aids, it would definitely allow the user to be aware of their expenses at a glance.
Even though FinancialPlanner is CLI, I like the GUI component added to enhance the UI/UX


This feature is implemented with the help of [XChart](https://knowm.org/open-source/xchart/), a simple charting library for Java by Knowm.

By typing in the vis command with the appropriate arguments (`/s` and `/t`), users will be able to visualize their
income or expense using visualization tools (Piechart, Bar Chart or Radar Chart)

Demo:

`vis /t expense /c pie`

Output

`Displaying piechart for expense`
A message will be shown telling you that the chart is being displayed

Choose a reason for hiding this comment

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

Really nice implementation. This feature is straightforward and meets the user requirements.


![](images/vis/visOutput.png)

This feature was implemented with the help of three different classes.
They are namely: Visualizer, Categorizer, VisCommand (Inherits from abstract Command Class)

VisCommand's Role:
1) Read the parameters of the vis command entered by the user
- `/t` Reads the type of cashflow that the user wants to visualize (income/expense)
- `/c` Reads the type of visualization tools the user wants (piechart/barchart)

2) Calls the Cateorgizer to sort cashflow (Income/Expense) according to type

3) Calls the Visualizer to display the chart to the user

Categorizer's Role:

According to the cashflow type (Income/Expense) arugment passed in, the Categorizer sorts the
specified cashflow entry according to type using a Hashmap which is returned and used by the Visualizer

Visualizer's Role:

Choose a reason for hiding this comment

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

Nice use charts for user to visualize their income/expenses.


According to the chart type (Pie/Bar/Radar) argument and the Hashmap obtained from the categorizer passed in,
the visualizer displays the specified visualization chart by calling the charting library Xchart.

### Class Diagram

Choose a reason for hiding this comment

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

Visualizer seems to have methods that return some kind of chart, but the return types are not indicated.
It would be clearer if return types were included.

The relationship between Categorizer and other classes is not immediately evident.
Perhaps some connecting lines or indications of method calls/dependencies would be helpful.

Choose a reason for hiding this comment

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

VIsualizer would do the showing of chart itself. Thus it is a void method call to visualizer to print the chart.

Thanks for the feedback on the class diagram!
Will work on that!


![](images/vis/visualisationClass.png)

Choose a reason for hiding this comment

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

In the text above Command and RawCommand are omitted, whereas it seems like there should be a dependency between the Categorizer and VisCommand. Maybe some more detailed steps could help clarify these doubts.

Choose a reason for hiding this comment

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

Thanks for your feedback, will add it in!


### Sequence Diagram

Choose a reason for hiding this comment

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

In the sequence diagram, it would be beneficial to include return arrows, especially for method calls that yield some kind of result.
The method printDisplayChart(type) is invoked on Ui from VisCommand, but from the class diagram, it seems like the method belongs to the Visualizer class. This discrepancy should be resolved for consistency.
Or am I just confusing myself?

Choose a reason for hiding this comment

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

Thanks for the feedback! I can see the confusion. printDisplayChart prints a message telling the user that a chart is being displayed. Visualizer has a method for displaying the actual chart. I have renamed the method for UI to make it clearer. I will add the return arrows as well!


Overall

![](images/vis/visualisationSequence.png)

Choose a reason for hiding this comment

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

Should there be a <<class>> above Categorizer and Visualizer?

Choose a reason for hiding this comment

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

Maybe you could include return arrows. Also it could perhaps be helpful to make the alt and opt boxes coherent by applying the coloring to all sequence diagrams in the DG (helps create impression that DG was written by a single person).


Categorizer
Copy link

Choose a reason for hiding this comment

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

Great use of ref frames to show the overall sequence diagram. Could maybe add return arrows to make the diagram slightly clearer.


![](images/vis/categorizerSequence.png)

Visualizer

![](images/vis/visualizerSequence.png)

### Add Income/Expense Feature

The add income/expense command has 2 compulsory arguments `/t` and `/a` and 1 optional argument `/r`.

Example:
```
add income /a 100 /t salary /r 30
```
Below are the steps that shows the implementation of add income/expense.

#### Step 1
The AddCashflowCommand instance calls addIncome() or addExpense(), depending on what `category` is initialised as.

addIncome() or addExpense() instantiates an Income or Expense object respectively.

Example:
```
switch (category) {
case INCOME:
cashflowList.addIncome(amount, incomeType, recur);
break;
case EXPENSE:
cashflowList.addExpense(amount, expenseType, recur);
break;
default:
ui.showMessage("Unidentified entry.");
break;
}
```

Choose a reason for hiding this comment

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

Showing this using a diagram would be better, instead of showing this segment of your code.

#### Step 2
The instantiated income/expense then updates the overall balance through addIncomeValue() or addExpenseValue().

The income/expense object is also added to the list in Cashflowlist which contains all incomes/expenses.
#### Step 3
The added income/expense is then displayed to the user through the Ui.

#### Add Income/Expense Class Diagram
Given below is the class diagram showing the class structure of the add income/expense mechanism:
![](images/cashflow/CashflowClassDiagram.png)

Choose a reason for hiding this comment

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

Good job adding class diagrams!

#### Add Income/Expense Sequence Diagram
Given below is the sequence diagram showing the add income/expense mechanism:
Copy link

Choose a reason for hiding this comment

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

Very clear sequence diagram that has good amount of white space to make it readable. Gives a good picture of how the add income/expense works and when each of them are called

![](images/cashflow/AddCashflowSequence.png)
### Recurring Cashflow Feature
Cashflow refers to an income or expense.

This feature is called from the user through the `/r` argument in add income/expense command.

If a cashflow is set to be recurring, the program would add another entry of the same cashflow to the Financial Planner after a set period of time.

Below are the steps that shows the implementation of the recurring cashflow feature.

#### Step 1

Choose a reason for hiding this comment

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

I think it would be good to add a summary of each step
#### Step 1: Store date of cashflow added

Once the cashflow is set to be recurring, its corresponding `Cashflow` object would store the date at which the cashflow was added to the Financial Planner.

The `recur` variable in the object would also be instantiated according to the user's input.

An additional `boolean` variable, `hasRecurred` is stored in the object and is set to `false` by default.

Example:
```
public abstract class Cashflow {
protected int recur;
protected LocalDate date;
protected boolean hasRecurred;
}
```
#### Step 2
When the Financial Planner is started again in the future, the date of startup would be obtained from the system.

After loading existing saved cashflows from data.txt, the program will check for cashflows that are set to be recurring and has not recurred.

Example:
```
if (recur > 0 && !hasRecurred) {
...
}
```

#### Step 3
Once a cashflow matches the above criteria, the date of its next addition to the Financial Planner, `dateOfAddition`, would be determined.

`dateOfAddition` would be compared to the current date, and if the current date is after or equal to `dateOfAddition`, an identical cashflow would be instantiated.

This identical cashflow would then have its `date` variable set to `dateOfAddition`, then this cashflow would be added to a temporary list, `tempCashflowList`.

The original cashflow would then have its `hasRecurred` variable be set to `true`.

#### Step 4
Each cashflow in `tempCashflowList` goes through **Step 3** again, so that multiple cashflows can be added if it has recurred more than once.

Once the process is done, all cashflows in `tempCashflowList` are then added to the Financial Planner.

The added cashflows are then displayed to the user.

#### Recurring Cashflow Class Diagram
Given below is the class diagram showing the class structure of the recurring cashflow mechanism:
![](images/cashflow/RecurClassDiagram.png)
#### Recurring Cashflow Sequence Diagrams
Given below is the sequence diagram showing the recurring cashflow mechanism:
![](images/cashflow/RecurSequence.png)
![](images/cashflow/AddRecurringSequence.png)

### Budget Feature

This feature has 5 functions, `set`, `update`, `delete`, `reset`, and `view`.

![](images/Budget.png)

Choose a reason for hiding this comment

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

Nice use of reference frames for neater view of the diagram.


The BudgetCommand will execute the appropriate command and print through `Budget.java` and prints any message to the user through `Ui.java`.

#### Set and update budget:

Example:
```
budget set /b 500
budget update /b 1000
```
The '/b' is followed by the budget amount. The first line will set the budget by calling `setBudget(500)` method in `Budget.java`.
The second line updates the budget by adding or subtracting the difference between the initial and updated amount to the
initial and current budget. This is done through `updateBudget(500)` method in `Budget.java`. Both functions can be seen
in the diagram above

#### Delete budget:

![](images/deleteBudget.png)

The budget will be deleted by setting the initial and current budget to 0 through the `deleteBudget()` method in `Budget.java`.

Example: `budget delete`

#### Reset budget:

![](images/resetBudget.png)

The budget will be reset by resetting the current budget to the initial budget through the `resetBudget()` method in `Budget.java`.

Example: `budget reset`

#### View budget:

![](images/viewBudget.png)

The current budget will be shown to the user through the `Ui`.

Example: `budget view`

Choose a reason for hiding this comment

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

Good job providing sequence diagrams for 3 functions of your budget feature!



## Product scope
### Target user profile

Choose a reason for hiding this comment

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

May want to add more User Stories to accurately reflect your actual feature implementation in each version.

Comment on lines 432 to 433

Choose a reason for hiding this comment

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

You may want to define your product scope and outline your target user profile. This will help make your developer guide more comprehensive.

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 have a clear target user profile which could give the reader a better picture of who the code should cater for

Expand Down
5 changes: 5 additions & 0 deletions docs/Style.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
!define LOGIC_COLOR #3333C4
!define LOGIC_COLOR_T1 #7777DB
!define LOGIC_COLOR_T2 #5252CE
!define LOGIC_COLOR_T3 #1616B0
!define LOGIC_COLOR_T4 #101086
Loading
Loading