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-F14-4] Financer #50

Open
wants to merge 320 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 177 commits
Commits
Show all changes
320 commits
Select commit Hold shift + click to select a range
baee009
delete parsertest
dylansiew Mar 19, 2024
0056ddc
Merge pull request #38 from dylansiew/master
dylansiew Mar 19, 2024
65329cc
Add taxes to outflow
ChongXern Mar 20, 2024
605cd58
Add data.txt to .gitignore
Mar 20, 2024
183e1f1
Add ..gitignore.un~ to .gitignore
Mar 20, 2024
f005ae5
Add inactivity timer with associated exception to throw and catch
ChongXern Mar 20, 2024
e9c39fd
Add back ParserTest - JUnit code
Mar 20, 2024
1028f25
Adjust unknown prompt exception
ChongXern Mar 20, 2024
213ca4e
Add and implement incomplete prompt exception with typo detector
ChongXern Mar 20, 2024
df20268
Merge branch 'branch-exceptions'
ChongXern Mar 20, 2024
67858a6
Merge remote-tracking branch 'upstream/master'
ChongXern Mar 21, 2024
8ff91d8
Merge pull request #40 from ChongXern/master
ChongXern Mar 21, 2024
4d31900
Implement delete inflow and outflow properly
Mar 21, 2024
c9dd575
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Mar 21, 2024
9a6a752
Fix gradle issues
Mar 21, 2024
3286fee
Add config/.idea/ to .gitignore
Mar 21, 2024
6d8a85b
Fix bugs from previous merge
ChongXern Mar 21, 2024
d340e68
Merge pull request #42 from ChongXern/master
ChongXern Mar 21, 2024
25b5c1c
Add edit inflow and outflow functionality
Mar 21, 2024
e4d350b
Modify input format for delete transaction
Mar 21, 2024
d9ea107
Modify input format for add and edit outflow
Mar 21, 2024
0c8ccf5
Remove ParserTest
ChongXern Mar 21, 2024
6674f07
Change transaction manager test and outflow for taxes
ChongXern Mar 21, 2024
8c4bc5c
Resolve exception handling for incomplete prompt exception
ChongXern Mar 21, 2024
32e2e18
Fix Gradle checkstyle issues
ChongXern Mar 21, 2024
2d2724c
Adjust indentation for instructions list
ChongXern Mar 21, 2024
8b6a8a7
Merge pull request #45 from ChongXern/master
ChongXern Mar 21, 2024
9111b7f
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Mar 21, 2024
653f4bf
Fix gradle issues
Mar 21, 2024
dda450d
Merge pull request #41 from Kishen271828/master
Kishen271828 Mar 21, 2024
f012642
Added help command
chenhowy Mar 21, 2024
bc73d63
Added assertion for transactionInfo
chenhowy Mar 21, 2024
8118dcc
refactor
dylansiew Mar 21, 2024
a4232ee
Merge pull request #46 from chenhowy/master
chenhowy Mar 21, 2024
169d765
Move tax to category, adjust security exception
ChongXern Mar 21, 2024
a359bdf
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
ChongXern Mar 21, 2024
eeeae09
resolving errors
dylansiew Mar 21, 2024
42e0400
resolve errors
dylansiew Mar 21, 2024
64eaaf9
please work
dylansiew Mar 21, 2024
7555d83
error in printing
dylansiew Mar 21, 2024
5eeb9c1
Merge pull request #48 from dylansiew/master
dylansiew Mar 21, 2024
d22e4f9
Add assertions for command classes
Mar 21, 2024
30e496c
Change back input format for edit and add outflow command, modify hel…
Mar 21, 2024
8ce45ff
Modify input.txt
Mar 21, 2024
7adf321
Fix load from data issues
Mar 21, 2024
87c28d9
Merge pull request #49 from Kishen271828/master
Kishen271828 Mar 21, 2024
f7e2dd1
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
ChongXern Mar 22, 2024
a58ba0b
Fix typo exception
ChongXern Mar 22, 2024
ac44b10
Add negative to outflow in transaction file
ChongXern Mar 22, 2024
b487aba
Revert "Add negative to outflow in transaction file"
ChongXern Mar 22, 2024
855fd3e
Add more JUnit test cases for ParserTest
Mar 23, 2024
7c1aae2
Rename SecurityException to ExceededAttemptsException
ChongXern Mar 24, 2024
8578ef2
Fix Gradle transaction manager test error
ChongXern Mar 24, 2024
21cd082
Add three attempts for username and password feature
ChongXern Mar 24, 2024
ec85f7e
Add newline in TransactionManagerTest
ChongXern Mar 24, 2024
706552d
Merge pull request #47 from ChongXern/master
ChongXern Mar 24, 2024
7c89346
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Mar 28, 2024
2eebc4c
md
dylansiew Mar 28, 2024
19c51c7
Merge pull request #53 from dylansiew/master
dylansiew Mar 28, 2024
50883f5
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Mar 28, 2024
0e928cb
Add comments
Mar 29, 2024
8f8e352
Add name length check to ensure description is not too long
ChongXern Mar 29, 2024
57cc090
Merge branch 'AY2324S2-CS2113-F14-4:master' into master
ChongXern Mar 29, 2024
5b56e77
Update DeveloperGuide.md
ChongXern Mar 29, 2024
1ecc74d
Merge pull request #54 from ChongXern/master
ChongXern Mar 29, 2024
7635e41
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp …
Mar 29, 2024
f7f78e4
Describe view-history feature in DG
Mar 29, 2024
456aeb2
Replace * imports with single imports in ParserTest
Mar 29, 2024
b5702e7
Merge pull request #55 from Kishen271828/developer-guide
Kishen271828 Mar 29, 2024
1ff6af0
Update DevelopersGuide.md to include a few of the upcoming proposed f…
ChongXern Mar 29, 2024
36cdc0b
Merge branch 'master' into master
ChongXern Mar 29, 2024
5ea3fb6
Merge pull request #57 from ChongXern/master
ChongXern Mar 29, 2024
e32307c
Enable assertions in build.gradle
ChongXern Mar 29, 2024
591e310
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Mar 29, 2024
022a87e
Merge pull request #58 from ChongXern/master
ChongXern Mar 29, 2024
b0a290d
Updated DG
chenhowy Mar 29, 2024
d118630
Merge pull request #59 from chenhowy/master
chenhowy Mar 29, 2024
b542850
Add sorting by name comparator method for sorting transactions
ChongXern Mar 29, 2024
83163ef
Remove unused collections import
ChongXern Mar 29, 2024
2b0d299
Add date comparator for transactions
ChongXern Mar 29, 2024
a295ed6
Merge pull request #60 from ChongXern/master
ChongXern Mar 29, 2024
25356a4
Added feature to handle multiple users
chenhowy Mar 30, 2024
fcea0fd
Update gradle.yml to remove text-ui-tests
chenhowy Mar 30, 2024
917bf63
Merge pull request #62 from chenhowy/master
chenhowy Mar 30, 2024
4873161
Create BarChart class
ChongXern Mar 30, 2024
5887295
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Mar 30, 2024
b987a56
Merge pull request #64 from ChongXern/master
ChongXern Mar 30, 2024
b7daccc
implemeting oop concepts
dylansiew Mar 30, 2024
e0e74ab
Merge pull request #65 from dylansiew/master
dylansiew Mar 30, 2024
1675cd4
Added feature to set reminders for future payments. Added a quick rep…
chenhowy Mar 30, 2024
2107aa4
Merge pull request #67 from chenhowy/master
chenhowy Mar 30, 2024
005cea2
typo handling
dylansiew Apr 1, 2024
973af97
Modify bar chart class
ChongXern Apr 1, 2024
8d25764
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 1, 2024
08f4f9d
Adjust params for show last n transactions without bar chart
ChongXern Apr 1, 2024
6b7f245
Reorder static variables in the right position in bar chart class
ChongXern Apr 1, 2024
ece74a4
Merge pull request #69 from ChongXern/master
ChongXern Apr 1, 2024
ace737f
Add all in view history command to view everything
ChongXern Apr 2, 2024
44e12ca
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 2, 2024
d4c7660
Merge pull request #70 from dylansiew/master
dylansiew Apr 2, 2024
298786f
Implement undo functionality
ChongXern Apr 2, 2024
df75771
Create CategoryNotFoundException.java
ChongXern Apr 2, 2024
11f6251
Adjust instanceof in TransactionManager
ChongXern Apr 2, 2024
f13e3a5
Fix checkstyle errors
ChongXern Apr 2, 2024
19cc0fb
Fix checkstyle errors
ChongXern Apr 2, 2024
26131d9
Fix checkstyle error
ChongXern Apr 2, 2024
5514ae2
Merge pull request #71 from ChongXern/master
ChongXern Apr 2, 2024
016614a
Added a feature to generate report for a past month, updated getQuick…
chenhowy Apr 3, 2024
83c3859
Merge pull request #72 from chenhowy/master
chenhowy Apr 3, 2024
61d9301
Implement category not found exception
ChongXern Apr 4, 2024
b62e961
Resolve merge conflict
ChongXern Apr 4, 2024
0dcf748
Fix checkstyle errors for exception
ChongXern Apr 4, 2024
d346be3
Add throw category not found exception to outflow method
ChongXern Apr 4, 2024
1e79323
Create Junit for new outflow method for is valid category
ChongXern Apr 4, 2024
8de07f7
Modify seedu Junit outflow test
ChongXern Apr 4, 2024
c205b74
Merge pull request #73 from ChongXern/master
ChongXern Apr 4, 2024
dde789f
Enable optional bar chart for view-history
ChongXern Apr 4, 2024
c1b40d0
Merge pull request #74 from ChongXern/master
ChongXern Apr 4, 2024
b5214b4
closing scanner
dylansiew Apr 4, 2024
1531954
closing scanner
dylansiew Apr 4, 2024
48623d6
Main working
Apr 4, 2024
694dde8
handling errors when loading file and setting mock user for demo purp…
dylansiew Apr 4, 2024
f604d4b
Implement sorting of transactions by time
Apr 4, 2024
c55a6c1
Remove unused imports
Apr 4, 2024
a84503a
Fix gradle checkstyle issues
Apr 4, 2024
a602006
Merge pull request #75 from Kishen271828/branch-Sorting
Kishen271828 Apr 4, 2024
a1e9a0c
Create IncorrectCommandSyntaxException
ChongXern Apr 4, 2024
32f0d97
Merge branch 'master' into master
ChongXern Apr 4, 2024
90b2ed7
Merge pull request #76 from ChongXern/master
ChongXern Apr 4, 2024
6dc63a6
Create CategoryNotFoundException
ChongXern Apr 4, 2024
245851d
Fix checkstyle errors
ChongXern Apr 4, 2024
95ecd55
Merge pull request #77 from ChongXern/master
ChongXern Apr 4, 2024
e9ead89
Update UG based on v1.0 features
Apr 4, 2024
2c754e0
Change category for example
Apr 4, 2024
8b5a1fd
Merge pull request #78 from Kishen271828/branch-UG
Kishen271828 Apr 4, 2024
fbe8f59
Update UserGuide with undo, bar chart and timer
ChongXern Apr 4, 2024
49e0a3a
removing all print statements
dylansiew Apr 4, 2024
8a4550e
Merge remote-tracking branch 'origin/master'
dylansiew Apr 4, 2024
9fcdf5f
Add Category restriction info in UG for transactions
Apr 4, 2024
ab928ae
Merge pull request #80 from ChongXern/master
ChongXern Apr 4, 2024
2deffa4
Update UG for v1.0 features
Apr 4, 2024
02ea959
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp …
Apr 4, 2024
ffa999b
resolving merge conflicts
dylansiew Apr 4, 2024
506afd9
Merge pull request #79 from Kishen271828/branch-UG
Kishen271828 Apr 4, 2024
7942f57
resolving merge conflicts
dylansiew Apr 4, 2024
d2c7392
Updated UG
chenhowy Apr 4, 2024
d55b1bb
Merge pull request #81 from chenhowy/master
chenhowy Apr 4, 2024
ae4d45d
fixing user error
dylansiew Apr 4, 2024
e929050
removing import
dylansiew Apr 4, 2024
8ef9ffe
Update UG
Apr 4, 2024
19a13a3
fixing bugs
dylansiew Apr 4, 2024
3fd991d
Merge pull request #82 from Kishen271828/branch-UG
Kishen271828 Apr 4, 2024
1cc162e
adding diagrams
dylansiew Apr 4, 2024
8942630
Add hyperlink
Apr 4, 2024
71d9333
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Apr 4, 2024
93f8796
Merge pull request #83 from Kishen271828/master
Kishen271828 Apr 4, 2024
6a45d0e
Update User Guide with Features and Hyperlinks
ChongXern Apr 5, 2024
a4a4d6d
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 5, 2024
f1449d1
Merge pull request #84 from ChongXern/master
ChongXern Apr 5, 2024
ee8dcb3
using of ui to print
dylansiew Apr 5, 2024
81f4a2b
Merge remote-tracking branch 'refs/remotes/origin/master'
dylansiew Apr 5, 2024
8266a43
fixing of scanner
dylansiew Apr 5, 2024
b414e5d
resolving formatting errors
dylansiew Apr 5, 2024
a1d0568
Merge pull request #86 from dylansiew/master
dylansiew Apr 5, 2024
88e4681
adding more FAQ
dylansiew Apr 5, 2024
5e49f28
Merge pull request #87 from dylansiew/master
dylansiew Apr 5, 2024
51d56aa
Update DeveloperGuide.md
dylansiew Apr 5, 2024
90af69b
Reposition timer object for each command class
ChongXern Apr 11, 2024
b909759
Merge branch 'master' into master
ChongXern Apr 11, 2024
fe15baf
Remove unused InactivityTimer import
ChongXern Apr 11, 2024
9d81d4c
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 11, 2024
8442416
Merge pull request #127 from ChongXern/master
ChongXern Apr 11, 2024
919f322
Add Project Portfolio Page for Chong Xern
ChongXern Apr 11, 2024
b40aee0
Resolve Issue #100
ChongXern Apr 11, 2024
5f0b41c
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 11, 2024
af8c306
Merge pull request #128 from ChongXern/master
ChongXern Apr 11, 2024
6fc74eb
Update Project Portfolio Page chongxern.md
ChongXern Apr 11, 2024
9016d3c
Merge branch 'AY2324S2-CS2113-F14-4:master' into master
ChongXern Apr 11, 2024
2b821e7
Merge pull request #129 from ChongXern/master
ChongXern Apr 11, 2024
2b2d574
Resolve Issue #123
ChongXern Apr 11, 2024
7846a51
PPP
dylansiew Apr 11, 2024
bbd399a
Remove unnecessary imports
ChongXern Apr 11, 2024
da5b5ec
Merge pull request #131 from dylansiew/master
dylansiew Apr 11, 2024
53ce177
Merge pull request #130 from ChongXern/master
ChongXern Apr 11, 2024
70c7793
Add Kishen271828 contribution in PPP
Apr 11, 2024
73a7f16
Merge pull request #132 from Kishen271828/branch-PPP
Kishen271828 Apr 11, 2024
0dfe6e1
Updated PPP for chenhowy
chenhowy Apr 12, 2024
7da853d
Merge pull request #133 from chenhowy/master
chenhowy Apr 12, 2024
a58ba23
Fix issues #126, #104 and #95
ChongXern Apr 12, 2024
dbde541
Merge pull request #134 from ChongXern/master
ChongXern Apr 12, 2024
9a3cf9a
Fixed delete-reminder, delete-inflow, delete-outflow to delete at cor…
chenhowy Apr 13, 2024
c89aa9f
Fixed help command showing incorrect information, fixed edit reminder…
chenhowy Apr 13, 2024
a7370c2
Fixed generate-report accepting inputs that do not make sense
chenhowy Apr 13, 2024
7c4a5d9
Fixed invalid date inputs causing null dateTime
chenhowy Apr 13, 2024
de502c0
Merge pull request #135 from chenhowy/master
chenhowy Apr 13, 2024
cef5ebc
fixing bugs
dylansiew Apr 13, 2024
7a77063
Merge pull request #136 from dylansiew/master
dylansiew Apr 13, 2024
8c980b6
Create UndoNotPermittedException.java
ChongXern Apr 13, 2024
5b967ed
Adjust undo functionalities for new undo exception
ChongXern Apr 14, 2024
c062955
Fix undo for adding inflow, outflow, reminder
ChongXern Apr 14, 2024
7b39d1d
Fix Issue #115
ChongXern Apr 14, 2024
0b950f5
Merge pull request #137 from ChongXern/master
ChongXern Apr 14, 2024
94a3851
Add exceptions for invalid index in edit & delete transaction
Apr 14, 2024
06bf2f9
Fix gradle checkstyle issues
Apr 14, 2024
a3ba484
Remove unused Exceptions
Apr 14, 2024
ea0050a
Merge pull request #138 from Kishen271828/master
Kishen271828 Apr 14, 2024
6a85779
Add OTHER category for reminders
Apr 14, 2024
8773e5e
Added JavaDoc comments to methods
chenhowy Apr 14, 2024
80293cd
Merge pull request #139 from chenhowy/master
chenhowy Apr 14, 2024
d65b0d7
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Apr 14, 2024
0f446dd
Update UG
Apr 15, 2024
1e2af6d
Add line dividers to improve UI
Apr 15, 2024
8f8431e
Create abstract create transaction method in base command
ChongXern Apr 15, 2024
5f142af
Make manager setter a method for base command class
ChongXern Apr 15, 2024
abbc8f4
Fix undo for delete commands
ChongXern Apr 15, 2024
9c74851
Remove unnecessary print lines
ChongXern Apr 15, 2024
61954a8
Fix edit functions
ChongXern Apr 15, 2024
549daad
Remove action attribute in undo command
ChongXern Apr 15, 2024
09ad23b
Merge branch 'branch-undo'
ChongXern Apr 15, 2024
7240e85
Allow create transition method to throw Exception
ChongXern Apr 15, 2024
e866a60
Fix checkstyle errors
ChongXern Apr 15, 2024
8b60cec
Merge pull request #140 from ChongXern/master
ChongXern Apr 15, 2024
6f74b5f
Update AboutUs.md for Chong Xern
ChongXern Apr 15, 2024
1204c09
Merge branch 'master' of https://github.com/AY2324S2-CS2113-F14-4/tp
Apr 15, 2024
6213705
Make welcome message appear only upon login
Apr 15, 2024
509ebb3
Update Dylan in AboutUs
Apr 15, 2024
668bfe9
Merge pull request #141 from Kishen271828/master
Kishen271828 Apr 15, 2024
f5239b5
Fix AboutUs portfolio link
Apr 15, 2024
cfedd57
Update UG
Apr 15, 2024
74cf690
Fix undo for delete transactions
ChongXern Apr 15, 2024
497ea8b
Update AboutUs with correct link
Apr 15, 2024
350851d
Correct getNthInflow,outflow,reminder from list functions
Apr 15, 2024
b6e1f29
Update AboutUs for everyone
Apr 15, 2024
64377f4
Merge pull request #142 from Kishen271828/master
Kishen271828 Apr 15, 2024
d4b7b67
Revert "Update AboutUs.md for Chong Xern"
ChongXern Apr 15, 2024
a32d147
Merge branch 'master' of https://github.com/ChongXern/tp
ChongXern Apr 15, 2024
f3b9580
username bug
dylansiew Apr 15, 2024
bc67f8a
Merge pull request #144 from dylansiew/master
Kishen271828 Apr 15, 2024
e2ebf76
Fix undo for delete commands
ChongXern Apr 15, 2024
60069f1
Fix checkstyle errors
ChongXern Apr 15, 2024
2ddc7e0
Merge pull request #145 from ChongXern/master
ChongXern Apr 15, 2024
b83adeb
Remove unnecessary print lines
ChongXern Apr 15, 2024
ddd22c1
Merge pull request #146 from ChongXern/master
ChongXern Apr 15, 2024
d4f74ba
Update TransactionManager.java
ChongXern Apr 15, 2024
4c28fae
Merge pull request #147 from ChongXern/master
ChongXern Apr 15, 2024
a376dfe
Update chongxern.md
ChongXern Apr 15, 2024
7af0f79
Update chongxern.md for PPP
ChongXern Apr 15, 2024
c862525
Fix bugs
Apr 15, 2024
3790710
update ug
Apr 15, 2024
84afa18
Merge pull request #148 from Kishen271828/master
Kishen271828 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
16 changes: 0 additions & 16 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,3 @@ jobs:

- name: Build and check with Gradle
run: ./gradlew check

- name: Perform IO redirection test (*NIX)
if: runner.os == 'Linux'
working-directory: ${{ github.workspace }}/text-ui-test
run: ./runtest.sh

- name: Perform IO redirection test (MacOS)
if: always() && runner.os == 'macOS'
working-directory: ${{ github.workspace }}/text-ui-test
run: ./runtest.sh

- name: Perform IO redirection test (Windows)
if: always() && runner.os == 'Windows'
working-directory: ${{ github.workspace }}/text-ui-test
shell: cmd
run: runtest.bat
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT
data/data.txt
..gitignore.un~
config/.idea/
/*.class
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Duke project template
# Finance Calculator

This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it.

Expand Down
8 changes: 6 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ dependencies {
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0'
}


test {
useJUnitPlatform()

Expand All @@ -29,11 +30,11 @@ test {
}

application {
mainClass.set("seedu.duke.Duke")
mainClass.set("financeproject.Main")
}

shadowJar {
archiveBaseName.set("duke")
archiveBaseName.set("project")
archiveClassifier.set("")
}

Expand All @@ -43,4 +44,7 @@ checkstyle {

run{
standardInput = System.in
enableAssertions = true
}


21 changes: 21 additions & 0 deletions compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash

# Define the base directory variables
SRC_DIR="src"
BUILD_DIR="build"
CLASSES_DIR="$BUILD_DIR/classes"
LIBS_DIR="$BUILD_DIR/libs"
JAR_NAME="Financer.jar"


# Compile the Java files
find "$SRC_DIR" -name "*.java" ! -path "*/test/*" > sources.txt
javac -d "$CLASSES_DIR" @sources.txt
rm sources.txt

# Package the .class files into a .jar file
cd "$CLASSES_DIR"
jar cvf "../libs/$JAR_NAME" *
cd -

echo "Compilation and packaging complete."
Empty file added data/Bob.txt
Empty file.
Empty file added data/data.txt
Empty file.
1 change: 1 addition & 0 deletions data/passwords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Bob|password
2 changes: 1 addition & 1 deletion docs/AboutUs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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) | Dylan | [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)
Expand Down
124 changes: 113 additions & 11 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,138 @@
## Acknowledgements

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

Choose a reason for hiding this comment

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

Don't forget to remove the skeleton code that comes with the DG!

- [CS2113 Course Website](https://nus-cs2113-ay2324s2.github.io/website/index.html)

## Design & implementation

Choose a reason for hiding this comment

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

Must include an overview of how each classes interact with one another. For instance, include a UML diagram of how UI interacts with exceptions or Parser interacts with UI.


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

The financial manager application is designed using an object-oriented approach, focusing on user authentication, transaction management, and user interaction. The core components include:

- **Main Application Loop**: Handles the initialization of the application, including loading data from storage, authenticating the user, and processing user commands until the application exits.

Choose a reason for hiding this comment

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

Perhaps you could include an architecture diagram to show how these components interact with each other at a higher level.

- **Command Pattern**: User commands are encapsulated as objects, allowing for the addition of new commands with minimal changes to existing code.
- **Transaction Management**: Separate classes for managing inflows and outflows, with a unified interface for adding, editing, and deleting transactions.
- **User Authentication**: Ensures that users are authenticated before accessing their financial data, with a mechanism to track and limit failed attempts.
- **Inactivity Timer**: Automatically logs out users after a period of inactivity, enhancing security.
- **Storage Management**: Handles the persistent storage of transaction data, allowing users to save and load their financial information.
- **[Proposed] Security features**: A maximum of three login attempts are inputted, failing which would cause the application to be exited automatically.
- **[Proposed] Financial transaction visualiser**: When viewing history of transactions, the data will be visualised using bar charts for better user friendliness.
- **[Proposed] Undo functionality**: Allows users to undo their last prompt, but only permittable 10 seconds after the last action.

### View Transaction History feature:

#### Implementation Details:

#### Functionality:
The View History feature allows users to retrieve a list of their recent transactions, categorized as inflows and outflows. The user can specify the number of transactions they want to view, and the system presents these transactions in reverse chronological order, with the latest transactions displayed first. Each transaction is presented with its description, date, and time of occurrence.

#### Design Considerations:
- **Data Structure**: The transaction data is stored in an instance of the `TransactionList` class, which is part of the `financialtransactions` package. This list maintains a record of all transactions made by the user, ensuring easy retrieval and manipulation of transaction data.
- **Categorization**: Transactions are categorized as inflow or outflow based on their type. This categorization enables users to differentiate between different types of financial activities, such as income and expenses.
- **Formatting**: The transactions are presented in a formatted string, providing clear and concise information to the user. Each transaction includes its description, date, and time.

#### Implementation Details:
- The `TransactionManager#showLastNTransactions()` method is responsible for retrieving the last N transactions from the Transaction List.
- The method iterates over the transaction list in reverse order, starting from the latest transaction and moving towards older transactions.
- Transactions are categorized as inflows or outflows based on their instance type (Inflow or Outflow), and the relevant transactions are added to the output string accordingly.
- The formatted string containing the transaction details is returned to the user for display.

#### Alternatives Considered:
During the development of the View Transaction History feature, several alternatives were considered to achieve the desired functionality. These alternatives included:

- Implementing a more complex data structure for storing transaction history, such as a linked list. However, a simple ArrayList-based approach was chosen for its simplicity and efficiency in managing transaction data.
- Providing additional filtering options, such as filtering transactions by date range or transaction category. While these options could definitely enhance the feature, they were deemed unnecessary for the initial implementation and may be considered for future iterations.

### Save File feature:
The `Storage#saveFile()` method will be called when the user decides to quit the application, the method will then get a string of all the transactions. This string will then be written to a file whose filename will be the username of the last user.

#### Implementation Details:

Choose a reason for hiding this comment

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

Should have included a loading data sequence diagram to explain how FileWriter object was created when Main is started.

- The method first creates a FileWriter object.
- It then calls `TransactionManager#toSave()`.
- This method is similar to `toString()`, except that it creates a string that is more storage friendly.
- In this method, each transaction is returned as `name|amount|date|category\n`.
- Each transaction is added line by line, after adding all transactions, the string is returned in the toSave() method.
- It is important to note that outflows are saved with a `-` in front of the amount.
- With the string generated in the `toSave()` method, the FileWriter will write it to the file before closing it.

### Load File feature:
The `Storage#loadFile()` method will be called after the user as logged in, it will then retrieve the transactions that were written in the past sessions, so that the user can continue using the finance manger.

#### Implementation Details:
- The method first creates a File object and a Transaction Manager object.

Choose a reason for hiding this comment

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

Perhaps you could include a class diagram to demonstrate how the saveFile class works.

- If the file exists
- The method will read from the file line by line, splitting each line by `|`. A new inflow or outflow object will be created with those values and then added to the Transaction Manager Object.
- If the file does not exist
- An empty transaction manager object will be returned.
- To differentiate between inflow or outflow, the `-` in front of the amount will be used.

## Product scope
### Target user profile

{Describe the target user profile}
The financial manager application is designed for individual users seeking a simple yet powerful tool to manage personal finances, including tracking income and expenses, and viewing transaction history.


### Value proposition

{Describe the value proposition: what problem does it solve?}
This application simplifies personal financial management by providing an intuitive interface for tracking and analyzing income and expenses. Users can easily add, edit, or delete transactions, view recent transaction history, and ensure their data is securely managed with user authentication and automatic logout features.


## 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/an ... | I want to ... | So that ...|
|-------|-------------|---------------|------------|
|v1.0|user|receive alerts or notifications when I exceed my budget limits for specific expense categories|I can stay within my financial goals|
|v1.0|user|generate monthly reports summarizing my income, expenses, and budget performance|I can track my financial progress over time|
|v1.0|user|edit or delete past transactions|I can correct any errors or update information as needed|
|v1.0|user|search for specific transactions based on keywords, dates, or categories|I can quickly find the information I need|
|v1.0|user|add income transactions with details such as amount, date, and category|I can keep track of my earnings|
|v1.0|user|add expense transactions with details such as amount, date, and category|I can monitor where my money is going|
|v1.0|user|categorize my transactions|I can organize my finances and have a clearer view of my income and expenses|
|v1.0|user|add instalment payments into the tracker|I can track finances for big ticket purchases such as furniture/TVs|
|v1.0|user|Use a customisable interface for my financial goals|I can adjust these financial goals accordingly as time passes|
|v1.0|user|add payment types such as credit card, debit card or cash|I can be reminded to pay credit card bills each month|
|v1.0|user|Be confident that my banking information is encrypted and safe from being accessed by others|The private information is not easily leaked to others|
|v2.0|user|Export my financial reports as a CSV|I can share my expenditure with my peers|
|v2.0|user|Visualise my transactions in more meaningful diagrams|I can better understand my spending|

## Non-Functional Requirements

{Give non-functional requirements}
1. **Security**: User authentication must be secure, with a limit on login attempts to prevent unauthorized access.
2. **Usability**: The application should be easy to use, with clear instructions and feedback for users.
3. **Performance**: The application should respond quickly to user inputs, with minimal delays in processing transactions.
4. **Reliability**: Data storage should be reliable, ensuring that user data is not lost between sessions.


## Glossary

* *glossary item* - Definition
1. **Inflow** - A financial transaction representing income or money received.
2. **Outflow** - A financial transaction representing expenses or money spent.


## Instructions for manual testing

{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing}
### Login Procedure:
- Start the application and enter your username and password when prompted.
- Test incorrect passwords to ensure the application correctly limits login attempts.
- [v2.0] If there are three incorrect attempts, the application will automatically exit and the user has to try again.

### Adding Transactions:
- Use the `add-inflow` and `add-outflow` commands to add new transactions, following the command format provided in the `help` command.
- Attempt to add transactions with missing or incorrect information to test validation.

### Editing and Deleting Transactions:
- Use the `edit-inflow` and `edit-outflow` commands to modify existing transactions.
- Use the `delete-inflow` and `delete-outflow` commands to remove transactions.
- Try editing or deleting transactions that do not exist to test error handling.

### Viewing Transaction History:
- Use the `view-history` command to display recent transactions.
- Test with different numbers of transactions to view.
- [v2.0] Additional bar charts will be shown to display the different percentage of categories used in the past n transactions.

### Inactivity Timeout:
- After logging in, do not input any commands for the duration specified by the inactivity timer to test automatic logout.
- A maximum of 2.5 minutes of inactivity will trigger the application to check with the user whether the user is still active or not. Input `yes` to indicate continued activity, otherwise input `no` to exit.
- 30 seconds after the 2.5 min (3 min), the application will automatically exit.
- Implemented to provide enhanced security, so no third party can access finance transactions.

### Data Persistence:
- Exit the application and restart it to ensure that previously entered transactions are still present.
Loading
Loading