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-W12-2] FindOurSEP #8

Open
wants to merge 520 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
520 commits
Select commit Hold shift + click to select a range
e1ad270
Add Filter and Find Sequence Diagrams
Holy-An Oct 30, 2024
348818f
Delete allocation_results.csv
Holy-An Oct 30, 2024
aac7d97
Merge pull request #88 from paulktham/DG-branch-2
isaacsaw25 Oct 30, 2024
1fa650f
Merge pull request #94 from Holy-An/UML-Diagram
paulktham Oct 30, 2024
5d5630c
Merge pull request #91 from ThisisXXZ/master
isaacsaw25 Oct 30, 2024
14b9589
change c to C
paulktham Oct 30, 2024
e7266ff
revert and generate
paulktham Oct 30, 2024
051bb1a
Merge pull request #95 from paulktham/master
ThisisXXZ Oct 30, 2024
3697b9b
Commands
paulktham Oct 30, 2024
b17b59f
Merge pull request #96 from paulktham/master
ThisisXXZ Oct 30, 2024
f0cf7e8
Adjust GenerateCommand sequence diagram arrowheads
isaacsaw25 Oct 31, 2024
840135c
DeveloperGuide.md: Refactor UI class explanation
isaacsaw25 Oct 31, 2024
2e20232
Remove unnecessary colon from return value
isaacsaw25 Oct 31, 2024
5083f45
Adjust return arrows
isaacsaw25 Oct 31, 2024
60b41f6
Add underlines for static variables
isaacsaw25 Oct 31, 2024
d0f8fe8
Refactor DeleteCommand.drawio.svg
isaacsaw25 Oct 31, 2024
ba4501f
Refactor AddCommand.drawio.svg
isaacsaw25 Oct 31, 2024
93f21a2
Move return arrows to leave more gap in bar
isaacsaw25 Oct 31, 2024
1e51dc6
Merge pull request #97 from isaacsaw25/master
ThisisXXZ Oct 31, 2024
bf08242
Add sequence diagram for the Exit Command
ehz0ah Oct 31, 2024
c92eee7
Handle merge conflicts
ehz0ah Oct 31, 2024
25bbffe
Add help/exit/unknown commands into DG
ehz0ah Oct 31, 2024
0da562c
Fix small bus in DG
ehz0ah Oct 31, 2024
17b8b8f
Add sequence diagram for filehandler component
ehz0ah Oct 31, 2024
83ef693
Update IO redirection test
ehz0ah Oct 31, 2024
14a2723
Merge pull request #99 from ehz0ah/dg
Holy-An Oct 31, 2024
47276bd
Merge branch 'master' into ppp
ehz0ah Oct 31, 2024
c5ba304
Add save CSV Feature
Holy-An Oct 31, 2024
470ee52
Refactor printFileLoadSuccessMessage()
Holy-An Oct 31, 2024
1d3b021
Add savetoCSV javadoc comments
Holy-An Oct 31, 2024
4f8c0b7
Refactor filter comments
Holy-An Oct 31, 2024
205c4c0
Refactor Ui.java
Holy-An Oct 31, 2024
f033b3c
Update I/O redirection test
Holy-An Oct 31, 2024
92152d2
Merge pull request #100 from Holy-An/csv
ehz0ah Oct 31, 2024
1ab484e
Merge branch 'master' into ppp
ehz0ah Oct 31, 2024
131585b
Update project portfolio page for ehz0ah
ehz0ah Oct 31, 2024
aa7526b
Update ppp with PRs link
ehz0ah Nov 1, 2024
e542181
Add find and filter to DG
Holy-An Nov 1, 2024
0ee0e65
Merge pull request #101 from ehz0ah/ppp
isaacsaw25 Nov 1, 2024
f0b7d45
Add find and filter to UG
Holy-An Nov 1, 2024
c9d5a16
Handle merge conflicts
Holy-An Nov 1, 2024
fd7f230
Update PPP
Holy-An Nov 1, 2024
64e349d
Merge pull request #102 from Holy-An/DG
isaacsaw25 Nov 1, 2024
baa545f
Update AllocatorClass.drawio.svg
ThisisXXZ Nov 1, 2024
c61453e
Update AllocatorSequence.drawio.svg
ThisisXXZ Nov 1, 2024
5b7ecdb
Update ViewQuotaSequence.drawio.svg
ThisisXXZ Nov 1, 2024
43db8d6
Rename PPP
ThisisXXZ Nov 1, 2024
7583b5f
Update AllocatorSequence.drawio.svg
ThisisXXZ Nov 1, 2024
9aea85f
Merge pull request #106 from ThisisXXZ/master
isaacsaw25 Nov 1, 2024
1fc7d2a
GenerateReportsd: Add activation bars
isaacsaw25 Nov 1, 2024
2a7c81b
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp
isaacsaw25 Nov 1, 2024
3cb447a
Merge pull request #107 from isaacsaw25/master
paulktham Nov 1, 2024
d413751
Add JUnit test for reading in files
ehz0ah Nov 1, 2024
6dfeb39
Fix invalid file path bug
ehz0ah Nov 1, 2024
f7221a9
Fix filter command
Holy-An Nov 1, 2024
71f5e92
Merge branch 'AY2425S1-CS2113-W12-2:master' into filter-fix
Holy-An Nov 1, 2024
7370cb1
Handle merge conflicts
Holy-An Nov 1, 2024
9d57e56
Merge remote-tracking branch 'origin/filter-fix' into filter-fix
Holy-An Nov 1, 2024
0734bf0
Fix RevertCommand bug
isaacsaw25 Nov 1, 2024
6a5d6da
RevertCommand.java: Fix logging level
isaacsaw25 Nov 1, 2024
2930749
Merge remote-tracking branch 'origin/master'
isaacsaw25 Nov 1, 2024
54fe49a
Merge pull request #113 from Holy-An/filter-fix
isaacsaw25 Nov 1, 2024
76bfbfc
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp
isaacsaw25 Nov 1, 2024
3311f25
Add JUnit test for saving to external file
ehz0ah Nov 1, 2024
305f4dd
Merge pull request #114 from isaacsaw25/master
Holy-An Nov 1, 2024
cad578b
Fix syntax errors
ehz0ah Nov 1, 2024
2266638
Rearrange static variables
ehz0ah Nov 1, 2024
64737a0
Merge pull request #115 from ehz0ah/test
isaacsaw25 Nov 1, 2024
d74aeb8
Fix CriteriaCommand bug
ThisisXXZ Nov 3, 2024
ec2aefd
Merge pull request #116 from ThisisXXZ/criteria_fix
isaacsaw25 Nov 3, 2024
45fbe0a
Fix multiple allocation bug
ThisisXXZ Nov 4, 2024
65784e2
Merge pull request #118 from ThisisXXZ/master
isaacsaw25 Nov 4, 2024
ff0f2b4
first iteration
paulktham Nov 4, 2024
65e40c1
DeveloperGuide.md: Add user stories for v1 and v2
isaacsaw25 Nov 5, 2024
f183cf7
Add tags to table of contents
ehz0ah Nov 5, 2024
07c620f
UserGuide.md: Add FAQ
isaacsaw25 Nov 5, 2024
a212633
Add NFRs to DG
ehz0ah Nov 5, 2024
86a370c
Add instructions for manual testing
ehz0ah Nov 5, 2024
e6173f6
DG done
paulktham Nov 5, 2024
380a6d1
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp …
isaacsaw25 Nov 5, 2024
7520f65
fixing some erorrs
paulktham Nov 5, 2024
cfa2eb3
Enhance DG
ThisisXXZ Nov 5, 2024
5344e16
Fix some logic errors and modify ToC
ThisisXXZ Nov 5, 2024
d2296d0
Add the missing s in ToC
ThisisXXZ Nov 5, 2024
1092a5f
Merge pull request #120 from ThisisXXZ/DG_enhance
ehz0ah Nov 5, 2024
72bdd35
Update DG
ehz0ah Nov 5, 2024
15a1dac
Handle merge conflicts
ehz0ah Nov 5, 2024
a6d54e5
Add FAQ to UG
ehz0ah Nov 5, 2024
0ff5678
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp …
isaacsaw25 Nov 5, 2024
4e8f273
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp
isaacsaw25 Nov 5, 2024
c0d3b6b
Add test files to UG
ehz0ah Nov 5, 2024
5a6910b
Merge branch 'master' into DG-branch-3
isaacsaw25 Nov 5, 2024
50d1aa6
Merge pull request #121 from isaacsaw25/DG-userstories
ehz0ah Nov 5, 2024
30c1f8b
Merge pull request #119 from paulktham/DG-branch-3
ehz0ah Nov 5, 2024
bacc72b
Clean up UG
ehz0ah Nov 5, 2024
539bebf
Handle merge conflicts
ehz0ah Nov 5, 2024
52982b6
Clean up UG
ehz0ah Nov 5, 2024
b3e4cda
Update user profile and value proposition
ehz0ah Nov 5, 2024
9eb20d5
Update IO tests
ehz0ah Nov 5, 2024
84c7899
Update IO tests
ehz0ah Nov 5, 2024
a9151b2
Update UI greetings
ehz0ah Nov 5, 2024
b2a2c90
Add tags for accpeted file format
ehz0ah Nov 5, 2024
58c8081
Update About Us
ehz0ah Nov 5, 2024
84b485f
Merge pull request #122 from ehz0ah/moredocs
isaacsaw25 Nov 5, 2024
12d673e
Update DeveloperGuide.md
Holy-An Nov 5, 2024
1cbae78
Handle merge conflicts
Holy-An Nov 5, 2024
047d3c1
Update sequence diagram
ehz0ah Nov 5, 2024
457c20b
Merge branch 'master' into moredocs
ehz0ah Nov 5, 2024
60dfe97
Update readme
ehz0ah Nov 5, 2024
2298e85
Merge pull request #123 from ehz0ah/moredocs
Holy-An Nov 5, 2024
a01933e
Add saveAllocationResults in DG
Holy-An Nov 5, 2024
69ed44b
Handle Merge Conflicts
Holy-An Nov 5, 2024
3940984
UserGuide.md: Fix minor grammar error
isaacsaw25 Nov 6, 2024
31872e5
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp
isaacsaw25 Nov 6, 2024
bdd4ae7
Merge pull request #124 from AY2425S1-CS2113-W12-2/isaacsaw25-patch-1
ThisisXXZ Nov 6, 2024
1a52460
CriteriaCommand.java: Fix decimal rounding issue
isaacsaw25 Nov 6, 2024
88df2e8
Merge pull request #125 from isaacsaw25/master
paulktham Nov 6, 2024
bb55428
Update UserGuide.md delete feature
paulktham Nov 6, 2024
5b01f8e
Merge pull request #126 from AY2425S1-CS2113-W12-2/paulktham-patch-1
isaacsaw25 Nov 6, 2024
1a74870
Update codebase based on testing
ehz0ah Nov 6, 2024
fee9a6c
Handle merge conflicts
ehz0ah Nov 6, 2024
03148db
Handle checkstyle errors
ehz0ah Nov 6, 2024
9b50602
Update UG
ehz0ah Nov 6, 2024
f0bc2f4
UI.java: Improved format for generated report table
isaacsaw25 Nov 6, 2024
8d696ab
test.txt: Add 100 students
isaacsaw25 Nov 6, 2024
94b2244
Update JUnit test
ehz0ah Nov 6, 2024
1448a12
Merge pull request #128 from isaacsaw25/master
isaacsaw25 Nov 6, 2024
2dfb024
Handle checkstyle
ehz0ah Nov 6, 2024
f790a40
Merge pull request #127 from ehz0ah/moredocs
isaacsaw25 Nov 6, 2024
0ddbad5
Handle Merge Conflicts
Holy-An Nov 6, 2024
8f8a75b
Modify AboutUs with profolio and avatar
ThisisXXZ Nov 6, 2024
3864b3f
Update DG
ThisisXXZ Nov 6, 2024
e0c113e
Fix Readme
ThisisXXZ Nov 6, 2024
c6451a4
Add some content for FAQ
ThisisXXZ Nov 6, 2024
ff2214e
Update PPP
ThisisXXZ Nov 6, 2024
e387892
Add ListCommand seq diag and explanation
isaacsaw25 Nov 6, 2024
2f575c2
Refactor "FindMySEP" to "FindOurSEP"
isaacsaw25 Nov 6, 2024
facfbc1
Merge pull request #130 from ThisisXXZ/stat_fix
ehz0ah Nov 6, 2024
2a77be3
Merge pull request #131 from isaacsaw25/master
ehz0ah Nov 6, 2024
301345b
Handle Merge Conflicts, add FindOurSEP in DG
Holy-An Nov 7, 2024
7e0d590
Update holy-an.md
Holy-An Nov 7, 2024
590a11d
Add Find and Filter class diagrams to DG
Holy-An Nov 7, 2024
0b814b8
Update printStudentList sd in DG
Holy-An Nov 7, 2024
0204e7f
Update AboutUs.md
Holy-An Nov 7, 2024
dd82afd
Delete MANIFEST.MF
Holy-An Nov 7, 2024
6ffcc4e
Update FindOurSEP component DG
Holy-An Nov 7, 2024
040e00b
Merge pull request #133 from Holy-An/DG-Update
ehz0ah Nov 7, 2024
545c03a
Update code to match UG
ehz0ah Nov 7, 2024
afa2802
Update help message to follow UG order
ehz0ah Nov 7, 2024
b32e352
Update table of contents
ehz0ah Nov 7, 2024
58b1647
Clean up
ehz0ah Nov 7, 2024
7153ade
Merge pull request #134 from ehz0ah/addug
Holy-An Nov 7, 2024
e45c67d
Ignore result output files
isaacsaw25 Nov 7, 2024
5214ee1
Update generate command and example outputs
isaacsaw25 Nov 7, 2024
67b6bf1
Append AboutUs.md missing information
isaacsaw25 Nov 7, 2024
434a022
Undo ignore for data output files
isaacsaw25 Nov 7, 2024
47928cd
Merge pull request #135 from isaacsaw25/master
Holy-An Nov 7, 2024
c8a2eaf
Increase test input size to ~20
ehz0ah Nov 7, 2024
e845773
Merge branch 'master' into inputtest
ehz0ah Nov 7, 2024
d766704
Fix formatting issues
isaacsaw25 Nov 7, 2024
aeb4b91
Merge pull request #136 from isaacsaw25/master
isaacsaw25 Nov 7, 2024
1fd9418
Merge pull request #137 from ehz0ah/inputtest
isaacsaw25 Nov 7, 2024
a56f642
Add Paul Display picture
isaacsaw25 Nov 7, 2024
240f548
Merge pull request #138 from isaacsaw25/master
ehz0ah Nov 7, 2024
2328a81
Fix display error for viewQuota format exception #142
isaacsaw25 Nov 8, 2024
82f0951
Fix able to revert when empty #155
isaacsaw25 Nov 8, 2024
d9d7127
Fix able to revert when empty #155
isaacsaw25 Nov 8, 2024
1ed5065
Merge pull request #173 from isaacsaw25/bugfix
ehz0ah Nov 10, 2024
95fd324
Update UG to be more robust
ehz0ah Nov 10, 2024
ce47c7f
Update initialisation protocol
ehz0ah Nov 10, 2024
cb95dd5
Update UI for file handling
ehz0ah Nov 10, 2024
a33132c
Fix small indentations issues
ehz0ah Nov 10, 2024
dacd338
Merge pull request #174 from ehz0ah/pebugs
Holy-An Nov 10, 2024
61be5a8
first change
paulktham Nov 10, 2024
8f830c1
minus the comma
paulktham Nov 10, 2024
0484f6e
Add remainder message for allocator
ThisisXXZ Nov 11, 2024
0638254
Modify stats command behavior
ThisisXXZ Nov 11, 2024
7ace8a4
Fix delete command bug
ThisisXXZ Nov 11, 2024
9a1d6a2
Separate AllocatorTest and modify stats command test
ThisisXXZ Nov 11, 2024
1279967
Modify a weird test case
ThisisXXZ Nov 11, 2024
9022afa
Merge pull request #175 from paulktham/DG-branch-4
paulktham Nov 11, 2024
a300e08
Merge pull request #177 from ThisisXXZ/PE_D_bugfix
isaacsaw25 Nov 11, 2024
61ed33c
halfway done
paulktham Nov 11, 2024
36efa27
done
paulktham Nov 11, 2024
648e9d1
Merge pull request #179 from paulktham/master
paulktham Nov 11, 2024
8abddad
Fix Delete Bug
Holy-An Nov 11, 2024
76baa7e
Merge pull request #180 from Holy-An/Fix-Delete-Bug
Holy-An Nov 11, 2024
09fda35
Merge branch 'master' of https://github.com/AY2425S1-CS2113-W12-2/tp
isaacsaw25 Nov 11, 2024
32f08ab
Add indexes for uni in generated list
isaacsaw25 Nov 11, 2024
6759560
Add descriptions for command summary table
isaacsaw25 Nov 11, 2024
be2538d
Merge pull request #181 from isaacsaw25/master
isaacsaw25 Nov 11, 2024
92a7ba0
Update UG
ehz0ah Nov 11, 2024
c5b3d51
Update IO tests
ehz0ah Nov 11, 2024
610b035
Merge pull request #182 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
5195a68
Remove png images
ehz0ah Nov 11, 2024
de7ecb9
Merge branch 'AY2425S1-CS2113-W12-2:master' into v2.1
ehz0ah Nov 11, 2024
d36f9e1
Merge pull request #183 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
69efab7
Update DG Glossary
ehz0ah Nov 11, 2024
6d3a4dc
Fix table fault
ehz0ah Nov 11, 2024
5591400
Merge pull request #184 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
955e1d1
Update table in UG
ehz0ah Nov 11, 2024
413fa21
Merge branch 'master' into v2.1
ehz0ah Nov 11, 2024
5f9d345
Update table in UG
ehz0ah Nov 11, 2024
ebe7c12
Merge pull request #185 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
f8a4a20
Add page break
ehz0ah Nov 11, 2024
9c28c39
Merge pull request #186 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
eacb4c1
Adjust page break
ehz0ah Nov 11, 2024
6038410
Merge branch 'master' into v2.1
ehz0ah Nov 11, 2024
1ed3ac2
Small changes
ehz0ah Nov 11, 2024
ed83d8b
Merge pull request #187 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
c048ad8
Adjust page breaks
ehz0ah Nov 11, 2024
78ac0bd
Merge branch 'master' into v2.1
ehz0ah Nov 11, 2024
78101b0
Merge pull request #188 from ehz0ah/v2.1
ehz0ah Nov 11, 2024
2dc8cc7
small edits
paulktham Nov 12, 2024
dcc46d2
Merge pull request #189 from paulktham/master
paulktham Nov 12, 2024
2d2060d
changing PPP links
paulktham Nov 12, 2024
d421e7e
Merge pull request #190 from paulktham/master
paulktham Nov 12, 2024
ab4f94e
Small fixes
ehz0ah Nov 12, 2024
3bcf660
Edit PPP
ThisisXXZ Nov 12, 2024
59da8f1
Merge branch 'master' of https://github.com/ThisisXXZ/tp
ThisisXXZ Nov 12, 2024
9a49642
Merge pull request #192 from ThisisXXZ/master
ThisisXXZ Nov 12, 2024
88d4050
Add page breaks for DG
ehz0ah Nov 12, 2024
8a18329
Merge pull request #191 from ehz0ah/v2.1
ehz0ah Nov 12, 2024
4b90b35
Remove page break
ehz0ah Nov 12, 2024
75a306d
Merge branch 'master' into v2.1
ehz0ah Nov 12, 2024
5a1d007
Merge pull request #193 from ehz0ah/v2.1
ehz0ah Nov 12, 2024
a5e0693
Modify stat command help manual
ThisisXXZ Nov 12, 2024
8d23bdb
Merge branch 'AY2425S1-CS2113-W12-2:master' into master
ThisisXXZ Nov 12, 2024
b0c6599
change filename link
paulktham Nov 12, 2024
3cdc700
Merge branch 'AY2425S1-CS2113-W12-2:master' into master
paulktham Nov 12, 2024
7ffa6b7
Merge pull request #194 from ThisisXXZ/master
ThisisXXZ Nov 12, 2024
cc0605d
Merge pull request #195 from paulktham/master
paulktham Nov 12, 2024
2f78a49
Edit UG
ThisisXXZ Nov 12, 2024
7684ca5
Merge pull request #197 from ThisisXXZ/master
ThisisXXZ Nov 12, 2024
d2789cd
deletecommand last fix
paulktham Nov 12, 2024
de07cfd
Merge branch 'AY2425S1-CS2113-W12-2:master' into master
paulktham Nov 12, 2024
57d3955
Merge pull request #198 from paulktham/master
paulktham Nov 12, 2024
7bea33a
Update UG
Holy-An Nov 12, 2024
4329221
Update UG
Holy-An Nov 12, 2024
bf0550f
Merge pull request #199 from Holy-An/UG-Preferences
Holy-An Nov 12, 2024
82b8aaa
Update ppp
ehz0ah Nov 12, 2024
3e38cb5
Merge pull request #200 from ehz0ah/v2.1
ehz0ah Nov 12, 2024
a704ced
Update UG
ehz0ah Nov 12, 2024
90ca528
Merge branch 'AY2425S1-CS2113-W12-2:master' into v2.1
ehz0ah Nov 12, 2024
de1d5f8
Merge pull request #201 from ehz0ah/v2.1
ehz0ah Nov 12, 2024
40535f8
Adjust page break
ehz0ah Nov 12, 2024
65a8760
Merge pull request #202 from ehz0ah/v2.1
ehz0ah Nov 12, 2024
d5de08f
Adjust page breaks
ehz0ah Nov 12, 2024
e13502c
Merge branch 'AY2425S1-CS2113-W12-2:master' into v2.1
ehz0ah Nov 12, 2024
7e2c9b9
Merge pull request #203 from ehz0ah/v2.1
ehz0ah Nov 12, 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
6 changes: 4 additions & 2 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ jobs:

- name: Perform IO redirection test (Windows)
if: always() && runner.os == 'Windows'
working-directory: ${{ github.workspace }}/text-ui-test
working-directory: ${{ github.workspace }}/text-ui-test
shell: cmd
run: runtest.bat
run: |
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
runtest.bat
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@
/build/
src/main/resources/docs/

# VSCode config files
.vscode/

# MacOS custom attributes files created by Finder
.DS_Store
*.iml
bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT


*class
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
# FindOurSEP project template

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
17 changes: 14 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,18 @@ repositories {
}

dependencies {
// JUnit dependencies for testing
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'

// AsciiTable dependencies for formatting tables
implementation group: 'de.vandermeer', name: 'asciitable', version: '0.3.2'

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.18.0'

// https://mvnrepository.com/artifact/com.opencsv/opencsv
implementation group: 'com.opencsv', name: 'opencsv', version: '5.9'
}

test {
Expand All @@ -29,18 +39,19 @@ test {
}

application {
mainClass.set("seedu.duke.Duke")
mainClass.set("findoursep.FindOurSEP")
}

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

checkstyle {
toolVersion = '10.2'
}

run{
run {
standardInput = System.in
enableAssertions = true
}
3 changes: 3 additions & 0 deletions data/allocation_results.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"students" : [ ]
}
4 changes: 4 additions & 0 deletions data/allocation_results.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
id/A1234567I, gpa/5.0, p/[12, 61, 43], alloc/12
id/A1234567J, gpa/4.5, p/[1, 2, 3], alloc/1
id/A1357913L, gpa/4.0, p/[3, 1, 2], alloc/3
id/A7654321K, gpa/3.8, p/[2, 3, 1], alloc/2
16 changes: 8 additions & 8 deletions docs/AboutUs.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# About us
# 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) | Anderson Lim | [Github](https://github.com/Holy-An)
![](https://avatars.githubusercontent.com/u/141603285?s=400&u=bf5b9eb5fde9c6bd5ab3f007f24ca6db6e24870b&v=4) | Isaac | [Github](https://github.com/isaacsaw25) | [Isaac](./team/isaacsaw25)
![](https://picsum.photos/seed/picsum/200/300) | Lee Hao Zhe | [Github](https://github.com/ehz0ah)
![](https://via.placeholder.com/100.png?text=Photo) | Paul Tham | [Github](https://github.com/paulktham)
![](https://via.placeholder.com/100.png?text=Photo) | Xiong Xinzhuang | [Github](https://github.com/ThisisXXZ)
254 changes: 249 additions & 5 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,266 @@
# 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.

Overall there are no major errors with the UML diagrams presented. Good job

- [Acknowledgements](#Acknowledgements)
- [Installation](#Installation)
- [Design & Implementation](#design)
- [Architecture](#architecture)
- [Frontend / User Interface](#frontend--user-interface)
- [Parser](#parser)
- [Commands](#commands)
- [Add Command](#add-command)
- [Allocator](#allocator)


## Acknowledgements

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

- [JUnit 5.10.0](https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api/5.10.0) for testing.
- [AsciiTable 0.3.2](https://mvnrepository.com/artifact/de.vandermeer/asciitable/0.3.2) for formatting tables.
- [Jackson Databind 2.18.0](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.18.0) for JSON processing.
- [OpenCSV 5.9](https://mvnrepository.com/artifact/com.opencsv/opencsv/5.9) for CSV parsing.

Many thanks to the developers and maintainers of these libraries for their incredible work. Their efforts have significantly contributed to the success of this project.

## Installation

To get started with this project, follow these steps:

### Prerequisites

- Java 17
- Download the latest `.jar` from [here](https://github.com/AY2425S1-CS2113-W12-2/tp/releases/tag/v1.0).

### Steps

1. **Copy the `.jar` file:**
- Move the downloaded `.jar` file into a designated folder on your computer.

2. **Prepare your data file:**
- If you want to parse a file (.CSV, .JSON, .TXT) containing student data, ensure you have the absolute path ready for that file.

3. **Run the `.jar` file:**
- Open a terminal.
- Navigate (`cd`) to the folder containing the `.jar` file.
- Execute the `.jar` file using the following command:
```shell
java -jar FindOurSEP.jar
```


🎉 Congratulations! You’re all set to dive into the wonders of this project. Enjoy the ride!

## Design & Implementation

### Architecture

![Architecture](UML_Diagrams/Architecture.drawio.svg)


### Frontend / User Interface
FindOurSEP is primarily a Command-Line Interface (CLI) based Java Application. The frontend currently consists of 2 main
components:
1. `UI` class - Manages interactions with the user, including printing messages, tables, and capturing user inputs.
2. `Messages` enum - Stores standardized messages for consistent user prompts and feedback across the application.
#### 1. `UI` Class
The `UI` class is designed to handle both input and output for the command-line interface. It manages user prompts,
input retrieval, and formatting for both regular messages and ASCII tables displaying lists.

Here is the class diagram highlighting the structure of the `UI` class.
![UIClass](UML_Diagrams/UIClass.drawio.svg)

How `UI` Works:
1. Whenever the program needs to interact with the user, it does so through the `UI` class, which serves as a **facade**
between the logical backend components and the user interface elements.

2. The `UI` class is responsible for displaying messages, receiving user input, and printing data formatted as tables or
text responses.

3. Upon receiving a message or command request, the UI class formats the message, incorporating relevant content
(e.g., student details or allocation results) before displaying it to the user. This approach maintains separation
between backend logic and the presentation layer.

4. For each user action, such as displaying a list of students or allocating slots, the `UI` class uses helper methods
(e.g., `printStudentList`, `generateReport`) to format and render the output. The methods ensure the responses are
consistent and user-friendly.

The `UI` class methods typically return `void`, but will print responses directly to the console or handle user input,
streamlining interactions and allowing the backend to focus solely on data processing.
Copy link

Choose a reason for hiding this comment

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

Maybe its better to include when does it not return void


#### 2. `Messages` Enum
The `Messages` enum centralizes common UI messages. For example, `Messages.ERROR` is passed to the UI for
display for default errors. This keeps responses uniform and allows for changes to user-facing text without modifying
backend logic. List of all `Messages`:

`WELCOME`: Greeting message displayed at startup.

`EXIT`: Farewell message when exiting.

`ALLOCATE_COMPLETE`: Shown upon completion of the allocation process.

`HELP`: Multi-line help message listing all available commands and their descriptions.

`ERROR`: General error message for unexpected issues.

`REVERT_COMPLETE`: Message displayed after a successful revert operation.

Each message can be accessed and printed via `Messages.<MESSAGE_NAME>` in the `UI` class or any other class that
references it.

#### Customizing and Extending the UI
Adding New Messages:
1. Open the `Messages` enum.
2. Add a new constant with the message text. Example:
```java
NEW_MESSAGE("Your custom message text here");
```
3. Reference the new message in the `UI` class or any other relevant part of the application using `Messages.NEW_MESSAGE`



### Parser

The `Parser` class is a crucial component instantiated as soon as FindOurSEP is initialized. Its responsibility is to process the user’s input into commands and invoking the correct command object for the rest of the program.

Some of its core features include:
- Breaking down user input and extracting the relevant command and data for further processing.
- Provide robust error handling when unknown command is received.
- Validate data parsed in from external file (.CSV, .JSON, .TXT) sources. (Further details in the `Storage` class)

Here is a class diagram highlighting the fundamental structure of the `Parser` class.

![ParserClass](UML_Diagrams/ParserClass.drawio.svg)

Choose a reason for hiding this comment

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

image

You could consider segmenting out the {abstract} Command class to improve its visibility, it currently looks like another command class.


How `Parser` works:
1. Whenever the user enters an input, the input will be directed to the `Parser` class's `parseInput()` method.
2. Within the method, the command will be extracted and the appropriate `XYZCommand` object (XYZCommand is a placeholder for various commands such as DeleteCommand, ListCommand, etc.) will be instantiated.
3. Upon instantiation, the `XYZCommand` is prepared for execution. Each `XYZCommand` class, inheriting from the abstract `Command` class, has a `run()` method that executes its specific instructions.

The sequence diagram below demonstrates the interactions within the `Parser` component when a user inputs the command: `add id/A1234567I gpa/5.0 p/{13,61,43}`.

![ParserSequence](UML_Diagrams/ParserSequence.drawio.svg)
Copy link

Choose a reason for hiding this comment

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

The return type should not have :


The boolean return value of `parseInput()` indicates whether the user has chosen to continue or terminate the program. A `true` value keeps FindOurSEP running, while a `false` value ends the program.

### Commands

#### Add Command

## Design & implementation
#### Delete Command

{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.}
Delete Command removes an exisiting Student in the StudentList.
Copy link

Choose a reason for hiding this comment

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

Maybe can explain in greater detail, particularly what is the return string for.

Choose a reason for hiding this comment

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

@paulktham 👀


![DeleteCommandSequence](./UML_Diagrams/deleteCommand.drawio.svg)

#### Criteria Command

Criteria Command sets a minimum GPA every student must acheieve before they can be allocated to a university.
Copy link

Choose a reason for hiding this comment

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

May be irrelevant to DG, but the method name is inconsistent ('gpa' in setMinimumGPA and validateGpa).

Choose a reason for hiding this comment

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

@Holy-An 👀


![CriteriaCommandSequence](./UML_Diagrams/CriteriaCommand.drawio.svg)
Copy link

Choose a reason for hiding this comment

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

Similarly, its nice to explain how the returned float is used.

Choose a reason for hiding this comment

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

@paulktham 👀


#### Find Command

#### Filter Command

#### Stats Command

#### ViewQuota Command


#### List Command

#### Stats Command

The `StatCommand` class implements the `stats` command, which provides GPA-related statistics (average GPA or minimum GPA) for students associated with a specified university. The command syntax is `stats <stat_type> <UNI_INDEX>`, where `<stat_type>` can be `-avggpa` for average GPA or `-mingpa` for minimum GPA.

![StatSequence](UML_Diagrams/StatSequence.drawio.svg)
Copy link

Choose a reason for hiding this comment

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

I think its better to standardize all the sequence diagrams for your commands. Either make the activation bar starts form the Command class directly or use dotted line first.


#### ViewQuota Command

The `ViewQuotaCommand` class handles the `viewQuota` command to display information about a university’s remaining quota (available spots) based on a specified university index.

![ViewQuotaSequence](UML_Diagrams/ViewQuotaSequence.drawio.svg)
Copy link

Choose a reason for hiding this comment

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

I think its better to leave the return variable name, spotsLeft out, since all the diagrams earlier do not have it.

Choose a reason for hiding this comment

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

@ThisisXXZ 👀


#### Allocate Command

The `AllocateCommand` class manages the allocation process of students using the `Allocator` class. This command sets up an allocation process for students in the specified `StudentList` and informs the user that allocation is underway.

You could refer to [Allocator](#allocator) section to check the detailed workflow of ``AllocateCommand``.
Copy link

Choose a reason for hiding this comment

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

printResponse return arrow is not pointing properly.


#### Revert Command

Choose a reason for hiding this comment

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

image

Diagram image for RevertSequence and GenerateSequence is currently broken

![RevertSequence](UML_Diagrams/RevertCommandSequence.drawio.svg)

Upon parsing a `revert` command, a `RevertCommand` instance is created. `RevertCommand` then calls the `revertAllocation()`
method in `StudentList`, which loops through all the students in the `students` array list. The method `revertAllocation()`
within the `Student` objects resets the allocation status and allocated university. The operation is completed by calling
the `UI` to print the templated response from the `Messages` enum.

#### Exit Command

#### Help Command

#### Generate Command

![GenerateSequence](UML_Diagrams/GenerateCommandSequence.drawio.svg)
Copy link

Choose a reason for hiding this comment

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

the return arrow of Ui is not pointing properly


The `generate` command is calls the `generateReport()` method in `StudentList`, which then calls the `generateReport()`
in the `UI` using the student array list, which prints an ASCII table representing the allocation outcome.

#### Unknown Command

#### Exit Command

### Allocator

The `Allocator` class is responsible for allocating students to universities based on their preferences and GPA. It interacts with the `StudentList`, `UniversityRepository`, and `Student` classes to perform the allocation.

In ``V1.0`` version, the allocation logic is designed as follows:

* **Sorting by GPA**: The list of students is sorted in descending order of GPA, so higher-GPA students are prioritized.
* **Preference-Based Allocation**: For each student:
* Iterates through the student’s university preferences.
* Checks if the university has open spots and if the student’s GPA meets the `minimumGPA` requirement.
* If both conditions are met, the student is allocated to that university, and the university’s spot count is reduced.
* The allocation stops once a student is assigned to a university.
* **Sorting by ID**: After allocation, the list is re-sorted by student ID.

Note that ``Allocator`` will copy the passed student list, therefore any modifications to the student list inside ``Allocator`` will not reflect in the original one.

Here is a class diagram highlighting the fundamental structure of the `Allocator` class.

![AllocatorClass](UML_Diagrams/AllocatorClass.drawio.svg)

Choose a reason for hiding this comment

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

image

The Solid Arrow for the class diagrams is incorrect. It should be a solid Triangle. You can refer to the Parser class diagram for the correct implementation.


``Allocator`` mainly participates in the execution of ``allocate`` command. The sequence diagram below showcases the program workflow when a user inputs the command ``allocate`` (assume before that several students have been added into the student list).

![AllocatorSequence](UML_Diagrams/AllocatorSequence.drawio.svg)

Choose a reason for hiding this comment

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

image

You can consider keeping the styling for all the names of the entities constant (Bolding of :Allocator entity).


#### Student

The `Student` class has a composition relationship with class StudentList. Its purpose is to store key information on the different students that have applied for the Student Exchange Program. Such information include their GPA and university preferences, which helps us allocate them to the various universities fairly, and also other information which helps the app track their allocation status.

#### StudentList

The ```StudentList``` is a fundamental component which is initiated as soon as FindOurSEP is initialised. Its purpose is to hold the necessary information of the different students that are applying for SEP. By having the list of students we are able to fairly allocate universities to the different students by comparing them to their cohort.

The sequence below illustrates the interactions between ```StudentList``` and ```Student``` when an addCommand is called with the appropriate inputs.

![StudentListSequence](UML_Diagrams/StudentList.drawio.svg)

#### University and UniversityRepository

These two classes have a composition relationship, where ```UniversityRepository``` is composed of ```University``` objects. The ```University``` object holds the various crucial information of any single university that is provided in the list of available universities. The ```UniversityRepository``` class then creates a static HashMap and statically inputs the list of universities into this HashMap. This HashMap is then easily accessible by other classes to get any information which may be necessary from the universities.

## Product scope

### Target user profile

{Describe the target user profile}
This was designed for admins handling the allocation of Student Exchange Program (SEP) locations for Computer Engineering (CEG) students at NUS.

### Value proposition

{Describe the value proposition: what problem does it solve?}
The app allows administrators to efficiently manage the allocation process using automated workflows and data-driven decision-making. Giving the administrators greater convenience when allocating students for their SEP.

## User Stories

Expand Down
8 changes: 5 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# Duke
# FindOurSEP

{Give product intro here}
FindMySEP is a Command Line Interface (CLI) tool designed for admins handling the allocation of Student Exchange
Program (SEP) locations for Computer Engineering (CEG) students at NUS. The app allows administrators to efficiently
manage the allocation process using automated workflows and data-driven decision-making.

Useful links:
* [User Guide](UserGuide.md)
* [FindOurSEP User Guide](UserGuide.md)
* [Developer Guide](DeveloperGuide.md)
* [About Us](AboutUs.md)
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/AllocatorClass.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/AllocatorSequence.drawio.svg
Copy link

Choose a reason for hiding this comment

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

Should the operation and return arrows in this diagram leave a small gap in the activation bar?
image
I understand that the respective methods are called/the methods are returned immediately, but most of the examples in the textbook show a small gap:
image

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/Architecture.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/CriteriaCommand.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FilterSequence.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FilterStudentAllocationListsd.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FilterStudentGpasd.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FilterStudentIdsd.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FilterStudentReportsd.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/UML_Diagrams/FindSequence.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading