diff --git a/AY2324S2-CS2103-F08-4_tp_master/authorship.json b/AY2324S2-CS2103-F08-4_tp_master/authorship.json new file mode 100644 index 00000000..83bac74a --- /dev/null +++ b/AY2324S2-CS2103-F08-4_tp_master/authorship.json @@ -0,0 +1 @@ +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"amanzainal"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F08-4/tp/graph/badge.svg?token\u003dMYL7SH6BMO)](https://codecov.io/gh/AY2324S2-CS2103-F08-4/tp)","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":14,"amanzainal":1}}] diff --git a/AY2324S2-CS2103-F08-4_tp_master/commits.json b/AY2324S2-CS2103-F08-4_tp_master/commits.json new file mode 100644 index 00000000..42a717c3 --- /dev/null +++ b/AY2324S2-CS2103-F08-4_tp_master/commits.json @@ -0,0 +1 @@ +{"authorDailyContributionsMap":{"joelgoh1":[],"yap-zong-xin":[],"amanzainal":[{"date":"2024-03-05","commitResults":[{"hash":"fd5d5934fb5bfa242fd47c280dce718f3fc8df53","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Display CodeCov badge","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"c6bfc9feedcf85fb3adb9d8015bd0f792eda2252","isMergeCommit":true,"messageTitle":"Merge pull request #1 from amanzainal/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"joelgoh1":{"docs":0,"functional-code":0,"test-code":0},"yap-zong-xin":{"docs":0,"functional-code":0,"test-code":0},"amanzainal":{"docs":1,"functional-code":0,"test-code":0}},"authorContributionVariance":{"joelgoh1":0.0,"yap-zong-xin":0.0,"amanzainal":0.07638889},"authorDisplayNameMap":{"joelgoh1":"CS2103-F08-4 JOEL..FENG","yap-zong-xin":"CS2103-F08-4 YAP .. XIN","amanzainal":"CS2103-F08-4 AMAN..IDIN"}} diff --git a/AY2324S2-CS2103-F09-2_tp_master/authorship.json b/AY2324S2-CS2103-F09-2_tp_master/authorship.json index 6f288eeb..35e1d0c2 100644 --- a/AY2324S2-CS2103-F09-2_tp_master/authorship.json +++ b/AY2324S2-CS2103-F09-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"### Neo Haowei","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003cimg src\u003d\"images/neohw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"[[github](http://github.com/NeoHW)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"* Responsibilities: Overall project coordination, code review","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"NeoHW":5,"-":46}}] +[{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"### Neo Haowei","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003cimg src\u003d\"images/neohw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"[[github](http://github.com/NeoHW)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"* Responsibilities: Overall project coordination, code review","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"### Li Guohuang","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"\u003cimg src\u003d\"images/guohuang88.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"[[github](http://github.com/guohuang88)]","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"* Role: Testing","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"* Responsibilities: Ensure project is tested properly and on time.","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"### Tan Zhi Wei","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"\u003cimg src\u003d\"images/zhiwei1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"[[github](http://github.com/ZhiWei1010)]","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"guohuang88":6,"ZhiWei1010":6,"NeoHW":5,"-":34}}] diff --git a/AY2324S2-CS2103-F09-2_tp_master/commits.json b/AY2324S2-CS2103-F09-2_tp_master/commits.json index 21ba151c..04ee0124 100644 --- a/AY2324S2-CS2103-F09-2_tp_master/commits.json +++ b/AY2324S2-CS2103-F09-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"guohuang88":[],"SherisseTJW":[{"date":"2024-03-04","commitResults":[{"hash":"6aaaf3fa750fe83176ac00adc3f7c0e0c15d20df","isMergeCommit":true,"messageTitle":"Merge pull request #22 from NeoHW/V1.1-AddProfilePic","messageBody":"V1.1 add profile pic","fileTypesAndContributionMap":{}}]}],"ZhiWei1010":[],"choowengyan":[],"NeoHW":[{"date":"2024-03-04","commitResults":[{"hash":"f5d917cdba85f6ffece8081e08c2f775decdf8e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for milestone 1.1","messageBody":"- Updated profile photo, role, and responsibilities for Neo Haowei\n\nThis commit updates the AboutUs.md page for milestone 1.1.\nNeo Haowei\u0027s profile photo, GitHub link, and portfolio link\nhave been added.\n\nFixes #16\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"docs":0,"functional-code":0,"test-code":0},"SherisseTJW":{"docs":0,"functional-code":0,"test-code":0},"ZhiWei1010":{"docs":0,"functional-code":0,"test-code":0},"choowengyan":{"docs":0,"functional-code":0,"test-code":0},"NeoHW":{"docs":5,"functional-code":0,"test-code":0}},"authorContributionVariance":{"guohuang88":0.0,"SherisseTJW":0.0,"ZhiWei1010":0.0,"choowengyan":0.0,"NeoHW":33.05785},"authorDisplayNameMap":{"guohuang88":"CS2103-F09-2 LI G..UANG","SherisseTJW":"CS2103-F09-2 SHER.. WEN","ZhiWei1010":"CS2103-F09-2 TAN .. WEI","choowengyan":"CS2103-F09-2 CHOO.. YAN","NeoHW":"CS2103-F09-2 NEO ..OWEI"}} +{"authorDailyContributionsMap":{"guohuang88":[{"date":"2024-03-05","commitResults":[{"hash":"67cb69188c5c4655d8709f6ce3bc0bc089286207","isMergeCommit":false,"messageTitle":"Update AboutUs.md to add profile picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]}],"SherisseTJW":[{"date":"2024-03-04","commitResults":[{"hash":"6aaaf3fa750fe83176ac00adc3f7c0e0c15d20df","isMergeCommit":true,"messageTitle":"Merge pull request #22 from NeoHW/V1.1-AddProfilePic","messageBody":"V1.1 add profile pic","fileTypesAndContributionMap":{}},{"hash":"8f2224d5f8fdee7802fa4b96d441a0695cec983a","isMergeCommit":true,"messageTitle":"Merge pull request #23 from ZhiWei1010/v1.1-add-profile-picture","messageBody":"Update AboutUs.md for milestone v1.1","fileTypesAndContributionMap":{}}]}],"ZhiWei1010":[{"date":"2024-03-04","commitResults":[{"hash":"a82460a19c98af3bf8d133548113d352c4fa7484","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Add profile picture.\n\nUpdate github link to redirect to personal github page.\n\nUpdate portfolio link to redirect to team portfolio page.\n\nUpdate role and responsibility for Tan Zhi Wei .\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]}],"choowengyan":[],"NeoHW":[{"date":"2024-03-04","commitResults":[{"hash":"f5d917cdba85f6ffece8081e08c2f775decdf8e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for milestone 1.1","messageBody":"- Updated profile photo, role, and responsibilities for Neo Haowei\n\nThis commit updates the AboutUs.md page for milestone 1.1.\nNeo Haowei\u0027s profile photo, GitHub link, and portfolio link\nhave been added.\n\nFixes #16\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":15}}}]},{"date":"2024-03-05","commitResults":[{"hash":"a65df35e86510160985bb9c3de8dce3110b2c1fd","isMergeCommit":true,"messageTitle":"Merge pull request #24 from guohuang88/branch-AboutUs","messageBody":"Update AboutUs.md to add profile picture","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"docs":6,"functional-code":0,"test-code":0},"SherisseTJW":{"docs":0,"functional-code":0,"test-code":0},"ZhiWei1010":{"docs":6,"functional-code":0,"test-code":0},"choowengyan":{"docs":0,"functional-code":0,"test-code":0},"NeoHW":{"docs":5,"functional-code":0,"test-code":0}},"authorContributionVariance":{"guohuang88":11.0,"SherisseTJW":0.0,"ZhiWei1010":11.0,"choowengyan":0.0,"NeoHW":30.555557},"authorDisplayNameMap":{"guohuang88":"CS2103-F09-2 LI G..UANG","SherisseTJW":"CS2103-F09-2 SHER.. WEN","ZhiWei1010":"CS2103-F09-2 TAN .. WEI","choowengyan":"CS2103-F09-2 CHOO.. YAN","NeoHW":"CS2103-F09-2 NEO ..OWEI"}} diff --git a/AY2324S2-CS2103T-F10-2_tp_master/authorship.json b/AY2324S2-CS2103T-F10-2_tp_master/authorship.json index e81d1ddf..f806e1c2 100644 --- a/AY2324S2-CS2103T-F10-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F10-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"# Target Proposition","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"This app is targeted towards student tutors who are more tech savvy, tapping into their proficiency in tech to streamline the management of student contact, needs, and administrative information. The app will provide structure to organization and information retrieval, simplifying the otherwise complicated and stressful process.","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"# User Feature List","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"## Features Overview","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"- **Case Insensitive Inputs**: All inputs are processed in a case-insensitive manner.","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":"- **Add Student**: `add -name {name} -address {S[PostalCode] #{UnitNumber}} -number {number} -subject {subject} -level {level}`","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"- **View Student Details**:","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" - Summary: `View -all`","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" - Detailed: `View -name {name}` or `View -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"- **View Summary Statistics**: `View -statistics`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"- **Delete Student**: `Delete -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"## Detailed Commands","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"### Add a Student","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"- **Example**: `add -name Xiao Ming -address S000000 #01-01 -number 88888888 -subject Math -level P1`","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"- **Success**: New student appears at the top of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: Terminal shows an error in red.","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"### Viewing Student Details","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"- **Summary**: Use `View -all` to see all students.","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"- **Details**: Use `View -name {name}` or `View -id {id}` for specific students.","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Appropriate student details page is shown.","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: \"No such student exists\" message is displayed.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"### Summary Statistics","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"- **Usage**: `View -statistics`","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Displays total number of students.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: Error shown in red.","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"### Delete Student Entry","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"- **Usage**: `Delete -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Student is removed after confirmation.","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: \"No such student exists\" error if ID is not found.","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"## Parameters","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":"- **Name**: Full name required, auto-incremented ID for duplicates.","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"- **Contact Number**: Must be 8 digits.","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"- **Address**: Format `S[PostalCode] #[UnitNumber]`.","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"- **Subject**: Consistent subject naming.","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"- **Level**: Format `P1-6`, `S1-5`, `J1-3`.","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"_Commands are designed with user ease and intuitive process flows in mind._","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":"* For the detailed documentation of this project, see the **[TuteeTally Product Website](https://ay2324s2-cs2103t-f10-1.github.io/tp/)**.","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"-":4,"KinTatHo":49}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"Windofbitter"},"content":"### Baizhou","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Windofbitter"},"content":"\u003cimg src\u003d\"images/windofbitter.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"### Ho Kin Tat","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"\u003cimg src\u003d\"images/kintatho.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"[[github](http://github.com/kintatho)]","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"[[portfolio](team/kintat.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":"### Liu Yiyang","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":"\u003cimg src\u003d\"images/0nesheep.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":"[[github](https://github.com/0nesheep/)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"MarcusGitty"},"content":"### Marcus","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"MarcusGitty"},"content":"\u003cimg src\u003d\"images/marcusgitty.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"MarcusGitty"},"content":"[[github](http://github.com/marcusgitty)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"MarcusGitty"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"jessicawyz"},"content":"### Wu Yizheng","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"KinTatHo"},"content":"\u003cimg src\u003d\"images/jessicawyz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"jessicawyz"},"content":"[[github](http://github.com/jessicawyz)]","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"jessicawyz"},"content":"* Responsibilities: Deliverables","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"0nesheep":4,"Windofbitter":2,"MarcusGitty":4,"jessicawyz":3,"-":45,"KinTatHo":7}},{"path":"docs/team/kintat.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" title: \"Kin Tat\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"### Personal Portfolio","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"KinTatHo":6}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"# Target Proposition","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"This app is targeted towards student tutors who are more tech savvy, tapping into their proficiency in tech to streamline the management of student contact, needs, and administrative information. The app will provide structure to organization and information retrieval, simplifying the otherwise complicated and stressful process.","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"KinTatHo"},"content":"# User Feature List","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"KinTatHo"},"content":"## Features Overview","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"KinTatHo"},"content":"- **Case Insensitive Inputs**: All inputs are processed in a case-insensitive manner.","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"KinTatHo"},"content":"- **Add Student**: `add -name {name} -address {S[PostalCode] #{UnitNumber}} -number {number} -subject {subject} -level {level}`","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"KinTatHo"},"content":"- **View Student Details**:","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"KinTatHo"},"content":" - Summary: `View -all`","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"KinTatHo"},"content":" - Detailed: `View -name {name}` or `View -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"KinTatHo"},"content":"- **View Summary Statistics**: `View -statistics`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"KinTatHo"},"content":"- **Delete Student**: `Delete -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"KinTatHo"},"content":"## Detailed Commands","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"KinTatHo"},"content":"### Add a Student","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"KinTatHo"},"content":"- **Example**: `add -name Xiao Ming -address S000000 #01-01 -number 88888888 -subject Math -level P1`","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"KinTatHo"},"content":"- **Success**: New student appears at the top of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: Terminal shows an error in red.","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"KinTatHo"},"content":"### Viewing Student Details","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"KinTatHo"},"content":"- **Summary**: Use `View -all` to see all students.","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"- **Details**: Use `View -name {name}` or `View -id {id}` for specific students.","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Appropriate student details page is shown.","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: \"No such student exists\" message is displayed.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"KinTatHo"},"content":"### Summary Statistics","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"- **Usage**: `View -statistics`","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Displays total number of students.","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: Error shown in red.","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"KinTatHo"},"content":"### Delete Student Entry","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"KinTatHo"},"content":"- **Usage**: `Delete -id {id}`","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"KinTatHo"},"content":"- **Success**: Student is removed after confirmation.","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"KinTatHo"},"content":"- **Failure**: \"No such student exists\" error if ID is not found.","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"KinTatHo"},"content":"## Parameters","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"KinTatHo"},"content":"- **Name**: Full name required, auto-incremented ID for duplicates.","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"KinTatHo"},"content":"- **Contact Number**: Must be 8 digits.","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"KinTatHo"},"content":"- **Address**: Format `S[PostalCode] #[UnitNumber]`.","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"KinTatHo"},"content":"- **Subject**: Consistent subject naming.","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"KinTatHo"},"content":"- **Level**: Format `P1-6`, `S1-5`, `J1-3`.","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":48,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"KinTatHo"},"content":"_Commands are designed with user ease and intuitive process flows in mind._","lastModifiedDate":"2024-03-01"},{"lineNumber":51,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"KinTatHo"},"content":"* For the detailed documentation of this project, see the **[TuteeTally Product Website](https://ay2324s2-cs2103t-f10-1.github.io/tp/)**.","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"KinTatHo"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"-":4,"KinTatHo":49}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"MarcusGitty"},"content":"### Baizhou","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Windofbitter"},"content":"\u003cimg src\u003d\"images/windofbitter.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jessicawyz"},"content":"### Ho Kin Tat","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"KinTatHo"},"content":"\u003cimg src\u003d\"images/kintatho.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"KinTatHo"},"content":"[[github](http://github.com/kintatho)]","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"KinTatHo"},"content":"[[portfolio](team/kintat.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"KinTatHo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"KinTatHo"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":"### Liu Yiyang","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":"\u003cimg src\u003d\"images/0nesheep.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":"[[github](https://github.com/0nesheep/)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"MarcusGitty"},"content":"### Marcus","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"MarcusGitty"},"content":"\u003cimg src\u003d\"images/marcusgitty.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"MarcusGitty"},"content":"[[github](http://github.com/marcusgitty)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"MarcusGitty"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"jessicawyz"},"content":"### Wu Yizheng","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"KinTatHo"},"content":"\u003cimg src\u003d\"images/jessicawyz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"jessicawyz"},"content":"[[github](http://github.com/jessicawyz)]","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"jessicawyz"},"content":"* Responsibilities: Deliverables","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"0nesheep":4,"MarcusGitty":5,"Windofbitter":1,"jessicawyz":4,"-":46,"KinTatHo":6}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"jessicawyz"},"content":"* a tutor that has a need to manage a significant number of contacts of students","lastModifiedDate":"2024-02-28"},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"jessicawyz"},"content":"**Value proposition**: ","lastModifiedDate":"2024-02-28"},{"lineNumber":284,"author":{"gitId":"jessicawyz"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"jessicawyz"},"content":"* Easier time managing their contacts (fast retrieval of relevant info)","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"jessicawyz"},"content":"* More organization \u0026 personalisation","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"jessicawyz"},"content":"* Easier time to track Student’s grades and weaknesses","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"jessicawyz"},"content":"* Manage parent’s expectations","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"jessicawyz"},"content":"* Easy tracking of payment","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"jessicawyz"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"jessicawyz"},"content":"|----------|---------|-------------------------------------------|-----------------------------------------------------------|","lastModifiedDate":"2024-02-28"},{"lineNumber":299,"author":{"gitId":"jessicawyz"},"content":"| `* * *` | Tutor | add a student | track the details of the student |","lastModifiedDate":"2024-02-28"},{"lineNumber":300,"author":{"gitId":"jessicawyz"},"content":"| `* * *` | Tutor | view student details summary on main page | get a brief idea of the student while navigating the list |","lastModifiedDate":"2024-02-28"},{"lineNumber":301,"author":{"gitId":"jessicawyz"},"content":"| `* * *` | Tutor | delete a person | remove entries that I no longer need |","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"jessicawyz"},"content":"| `* * *` | Tutor | view single students detail | see the individual detail for a single student |","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"jessicawyz"},"content":"| `* * *` | Tutor | view total number of students | check if I have space for more students |","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"jessicawyz"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"MarcusGitty"},"content":"**Use case: Add a Student**","lastModifiedDate":"2024-02-28"},{"lineNumber":313,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":314,"author":{"gitId":"MarcusGitty"},"content":"**MSS** (Main Success Story)","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"MarcusGitty"},"content":"1. User initiates the command to add a student by providing the student\u0027s name, address, contact number, subject, and level.","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"MarcusGitty"},"content":"2. The AddressBook processes the provided information, adds the student particulars into the system, and assigns a unique ID to the student.","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"MarcusGitty"},"content":"3. AddressBook displays a confirmation message along with the details of the newly added student at the top of the list.","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":322,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":323,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":324,"author":{"gitId":"MarcusGitty"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":325,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"MarcusGitty"},"content":"* 1a. User inputs the command in an incorrect format.","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"MarcusGitty"},"content":" * 1a1. AddressBook shows an error message and the correct command format.","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"MarcusGitty"},"content":"* 1b. User enters a name that already exists in the AddressBook.","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":334,"author":{"gitId":"MarcusGitty"},"content":" * 1b1. AddressBook generates and assigns a unique ID to the new student to avoid duplication.","lastModifiedDate":"2024-02-28"},{"lineNumber":335,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"MarcusGitty"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"MarcusGitty"},"content":"* 1c. User omits a required field in the command.","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"MarcusGitty"},"content":" * 1c1. AddressBook shows an error message indicating the missing field.","lastModifiedDate":"2024-02-28"},{"lineNumber":341,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":342,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":343,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":344,"author":{"gitId":"MarcusGitty"},"content":"**Use case: View Student Detail**","lastModifiedDate":"2024-02-28"},{"lineNumber":345,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":346,"author":{"gitId":"MarcusGitty"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":347,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":348,"author":{"gitId":"MarcusGitty"},"content":"1. User requests to view details of students either by listing all or searching by name or ID.","lastModifiedDate":"2024-02-28"},{"lineNumber":349,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":350,"author":{"gitId":"MarcusGitty"},"content":"2. AddressBook retrieves and shows the relevant student details based on the request.","lastModifiedDate":"2024-02-28"},{"lineNumber":351,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":352,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":353,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":354,"author":{"gitId":"MarcusGitty"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":355,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":356,"author":{"gitId":"MarcusGitty"},"content":"* 2a. The requested student does not exist or the list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":357,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":358,"author":{"gitId":"MarcusGitty"},"content":" * 2a1. AddressBook displays a message indicating no such student exists or the list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":359,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":360,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":361,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":362,"author":{"gitId":"MarcusGitty"},"content":"* 2b. User inputs an incorrect command format for viewing details.","lastModifiedDate":"2024-02-28"},{"lineNumber":363,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":364,"author":{"gitId":"MarcusGitty"},"content":" * 2b1. AddressBook shows an error message and the correct command format.","lastModifiedDate":"2024-02-28"},{"lineNumber":365,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":366,"author":{"gitId":"MarcusGitty"},"content":"Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":367,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":368,"author":{"gitId":"MarcusGitty"},"content":"**Use case: View Summary Statistics**","lastModifiedDate":"2024-02-28"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":372,"author":{"gitId":"MarcusGitty"},"content":"1. User requests to view summary statistics of students.","lastModifiedDate":"2024-02-28"},{"lineNumber":373,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":374,"author":{"gitId":"MarcusGitty"},"content":"2. AddressBook processes the request and displays the total number of students along with other relevant statistics.","lastModifiedDate":"2024-02-28"},{"lineNumber":375,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":376,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":377,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":378,"author":{"gitId":"MarcusGitty"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":379,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":380,"author":{"gitId":"MarcusGitty"},"content":"* 2a. There is an error in processing the request.","lastModifiedDate":"2024-02-28"},{"lineNumber":381,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":382,"author":{"gitId":"MarcusGitty"},"content":" * 2a1. AddressBook displays an error message in red.","lastModifiedDate":"2024-02-28"},{"lineNumber":383,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":384,"author":{"gitId":"MarcusGitty"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":385,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":386,"author":{"gitId":"MarcusGitty"},"content":"**Use case: Delete a Student**","lastModifiedDate":"2024-02-28"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"MarcusGitty"},"content":"1. User requests to list Student","lastModifiedDate":"2024-02-28"},{"lineNumber":391,"author":{"gitId":"MarcusGitty"},"content":"2. AddressBook shows a list of Student","lastModifiedDate":"2024-02-28"},{"lineNumber":392,"author":{"gitId":"MarcusGitty"},"content":"3. User requests to delete a specific Student in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":393,"author":{"gitId":"MarcusGitty"},"content":"4. AddressBook deletes the Student","lastModifiedDate":"2024-02-28"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":410,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":411,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":412,"author":{"gitId":"MarcusGitty"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":434,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":435,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"MarcusGitty":80,"jessicawyz":16,"-":383}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"# TuteeTally User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"TuteeTally is a **desktop app for managing student contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TuteeTally can make student management much easier and faster than traditional GUI apps.","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"The system includes features for adding students, viewing student details, viewing summary statistics, and deleting student entries. All inputs are case-insensitive, enhancing user accessibility.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"0nesheep"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"0nesheep"},"content":"Adds a student particulars into address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"0nesheep"},"content":"Format: `add -name {NAME} -address {S{PostalCode}} #{UnitNumber} -number {number} -subject {subject} -level {level}`","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"0nesheep"},"content":"**Tip:** If addition is successful, the new student record will be shown at the top of the list.","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"0nesheep"},"content":"* `add -name Xiao Ming -address S000000 #01-01 -number 88888888 -subject Math -level P1`","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"0nesheep"},"content":"### Deleting a student : `Delete`","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"0nesheep"},"content":"Deletes the specified student from the address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"0nesheep"},"content":"Format: `Delete -id {id}`","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"0nesheep"},"content":"* Deletes the person at the specified `id`.","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"0nesheep"},"content":"* The index refers to the 5-digit code attached to each student entry.","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"0nesheep"},"content":"* `delete -id 88888` deletes the student with the id 8888","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Windofbitter"},"content":"### View student statistics: View","lastModifiedDate":"2024-02-28"},{"lineNumber":106,"author":{"gitId":"Windofbitter"},"content":"This would display the total number of students ","lastModifiedDate":"2024-02-28"},{"lineNumber":107,"author":{"gitId":"Windofbitter"},"content":"Format: `View -statistics`","lastModifiedDate":"2024-02-28"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":109,"author":{"gitId":"Windofbitter"},"content":"### View student summary at home page: View","lastModifiedDate":"2024-02-28"},{"lineNumber":110,"author":{"gitId":"Windofbitter"},"content":"This would display a summary of student particulars on the homepage.","lastModifiedDate":"2024-02-28"},{"lineNumber":111,"author":{"gitId":"Windofbitter"},"content":"Format: `View -all`","lastModifiedDate":"2024-02-28"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":113,"author":{"gitId":"Windofbitter"},"content":"### View student particular by name: View ","lastModifiedDate":"2024-02-28"},{"lineNumber":114,"author":{"gitId":"Windofbitter"},"content":"This will display a specific student particular by searching its name ","lastModifiedDate":"2024-02-28"},{"lineNumber":115,"author":{"gitId":"Windofbitter"},"content":"Format: `View -name [name]`","lastModifiedDate":"2024-02-28"},{"lineNumber":116,"author":{"gitId":"Windofbitter"},"content":"Examples:","lastModifiedDate":"2024-02-28"},{"lineNumber":117,"author":{"gitId":"Windofbitter"},"content":"* `View -name Xiao Ming` would display the student particular of Xiao Ming if existed","lastModifiedDate":"2024-02-28"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":119,"author":{"gitId":"0nesheep"},"content":"### View student particular by id: View ","lastModifiedDate":"2024-02-28"},{"lineNumber":120,"author":{"gitId":"Windofbitter"},"content":"This will display a specific particular by searching for its id","lastModifiedDate":"2024-02-28"},{"lineNumber":121,"author":{"gitId":"Windofbitter"},"content":"Format: `View -id [id]`","lastModifiedDate":"2024-02-28"},{"lineNumber":122,"author":{"gitId":"Windofbitter"},"content":"Examples; ","lastModifiedDate":"2024-02-28"},{"lineNumber":123,"author":{"gitId":"Windofbitter"},"content":"* `View -id 88888` would display the student particular for student whose id is 88888 if it exists.","lastModifiedDate":"2024-02-28"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"0nesheep"},"content":"**Add** | `add -name {NAME} -address {S{PostalCode}} #{UnitNumber} -number {number} -subject {subject} -level {level}` \u003cbr\u003e e.g., `add -name Xiao Ming -address S000000 #01-01 -number 88888888 -subject Math -level P1`","lastModifiedDate":"2024-02-28"},{"lineNumber":150,"author":{"gitId":"0nesheep"},"content":"**Delete** | `Delete -id {id}`\u003cbr\u003e e.g., `delete -id 88888`","lastModifiedDate":"2024-02-28"},{"lineNumber":151,"author":{"gitId":"Windofbitter"},"content":"**View** | `View [-statistics] [-all] [-id ID] [-name NAME]","lastModifiedDate":"2024-02-28"},{"lineNumber":152,"author":{"gitId":"Windofbitter"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":153,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"0nesheep":20,"Windofbitter":17,"-":116}},{"path":"docs/team/kintat.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"KinTatHo"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"KinTatHo"},"content":" title: \"Kin Tat\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"KinTatHo"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"KinTatHo"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"KinTatHo"},"content":"### Personal Portfolio","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"KinTatHo":6}}] diff --git a/AY2324S2-CS2103T-F10-2_tp_master/commits.json b/AY2324S2-CS2103T-F10-2_tp_master/commits.json index 9a25b06d..6f131fba 100644 --- a/AY2324S2-CS2103T-F10-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-F10-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"0nesheep":[{"date":"2024-02-28","commitResults":[{"hash":"d69b533936093aa166a6efd8f47eb93f1c5ca58e","isMergeCommit":false,"messageTitle":"Add 0nesheep.png and edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"63a29a544614c93c5a0a6dd4d803ca8f8f741aea","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2324S2-CS2103T-F10-2/kt-profile","messageBody":"Add profile photo and kintat.md","fileTypesAndContributionMap":{}},{"hash":"47a3ca52d12857096df82156c1b36a799c83e4de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"782c8b96d45730736a6258da260fef0ef2385aac","isMergeCommit":true,"messageTitle":"Merge pull request #15 from 0nesheep/master","messageBody":"Add 0nesheep.png and edit AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ba28783966983c44fbd98b43c154edce06469d43","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jessicawyz/master","messageBody":"Edit naming of jessicawyz image","fileTypesAndContributionMap":{}}]}],"MarcusGitty":[{"date":"2024-02-28","commitResults":[{"hash":"60465731a5793b1ae7c752dc5603e847aea2068f","isMergeCommit":false,"messageTitle":"Added Photo and Edited AboutUS.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"e0b45d7483e128d212d760f2aebcd40a68645b73","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39d3ae24c098e007b1e271a065f98d59db39f753","isMergeCommit":true,"messageTitle":"Merge pull request #9 from MarcusGitty/master","messageBody":"Add marcusgitty photo and edit aboutUS.md","fileTypesAndContributionMap":{}}]}],"Windofbitter":[{"date":"2024-02-28","commitResults":[{"hash":"25c880729081540dc393e6e1900449ad1a1d0c12","isMergeCommit":false,"messageTitle":"Add Baizhou photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]}],"jessicawyz":[{"date":"2024-02-28","commitResults":[{"hash":"f90ddad86e821f97fe2296ebf8fe57c6ff5b952e","isMergeCommit":false,"messageTitle":"Update AboutUs page for yizheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"60f6979fca5907b52cc9a17577106c1fafd12e3d","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jessicawyz/master","messageBody":"Update AboutUs page for yizheng","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"b637d912a35ece4466cea120e66ce21e1a707f01","isMergeCommit":false,"messageTitle":"Edit naming of jessicawyz image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"KinTatHo":[{"date":"2024-02-28","commitResults":[{"hash":"cc81a8dee48f8a2fc7088602ced464ec13191dfb","isMergeCommit":false,"messageTitle":"Add Kin Tat photo and kintat.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":6}}},{"hash":"170e1f482893d99ea9d675a13db30a981447999f","isMergeCommit":false,"messageTitle":"Add newline at READme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-01","commitResults":[{"hash":"392ddd370fc46f75ebf52e5a4f06f9362a49f843","isMergeCommit":false,"messageTitle":"Update README to showcase TuteeTally","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":10}}},{"hash":"5a60b5c7d94b4f19bba337b8072a68e1682b8b0e","isMergeCommit":false,"messageTitle":"Update Yizheng and my profile pic to be our github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-03","commitResults":[{"hash":"c458beac5f27711ddddebdc1e913b24b0b3adedb","isMergeCommit":true,"messageTitle":"Merge pull request #25 from AY2324S2-CS2103T-F10-2/readme","messageBody":"Update README to showcase TuteeTally","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"0nesheep":{"docs":4,"functional-code":0,"test-code":0},"MarcusGitty":{"docs":4,"functional-code":0,"test-code":0},"Windofbitter":{"docs":2,"functional-code":0,"test-code":0},"jessicawyz":{"docs":3,"functional-code":0,"test-code":0},"KinTatHo":{"docs":62,"functional-code":0,"test-code":0}},"authorContributionVariance":{"0nesheep":5.7599993,"MarcusGitty":43.559994,"Windofbitter":1.4399998,"jessicawyz":5.8,"KinTatHo":401.64},"authorDisplayNameMap":{"0nesheep":"CS2103T-F10-2 LIU ..YANG","MarcusGitty":"CS2103T-F10-2 MARC.. RUI","Windofbitter":"CS2103T-F10-2 BAIZ.. CAI","jessicawyz":"CS2103T-F10-2 WU Y..HENG","KinTatHo":"CS2103T-F10-2 HO K.. TAT"}} +{"authorDailyContributionsMap":{"0nesheep":[{"date":"2024-02-28","commitResults":[{"hash":"d69b533936093aa166a6efd8f47eb93f1c5ca58e","isMergeCommit":false,"messageTitle":"Add 0nesheep.png and edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"ff2c351d74110c2ac0b5adad1f5168767c771e1d","isMergeCommit":false,"messageTitle":"Edit UserGuide.md to include add and delete commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":96}}},{"hash":"69222a47a33a52c3ecbd7cb057d099d99595eb7b","isMergeCommit":false,"messageTitle":"Edit user guide intro","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"63a29a544614c93c5a0a6dd4d803ca8f8f741aea","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2324S2-CS2103T-F10-2/kt-profile","messageBody":"Add profile photo and kintat.md","fileTypesAndContributionMap":{}},{"hash":"671bbab5c0b320139b193d18016772367edd00d4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-user-guide\u0027 into branch-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99c3c999782d56c3657288b21523998aaf86e26a","isMergeCommit":true,"messageTitle":"Merge pull request #22 from 0nesheep/branch-user-guide","messageBody":"Add delete and add command description, edit user guide intro","fileTypesAndContributionMap":{}},{"hash":"47a3ca52d12857096df82156c1b36a799c83e4de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"782c8b96d45730736a6258da260fef0ef2385aac","isMergeCommit":true,"messageTitle":"Merge pull request #15 from 0nesheep/master","messageBody":"Add 0nesheep.png and edit AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ba28783966983c44fbd98b43c154edce06469d43","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jessicawyz/master","messageBody":"Edit naming of jessicawyz image","fileTypesAndContributionMap":{}}]}],"MarcusGitty":[{"date":"2024-02-28","commitResults":[{"hash":"60465731a5793b1ae7c752dc5603e847aea2068f","isMergeCommit":false,"messageTitle":"Added Photo and Edited AboutUS.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"dffe8757b4922fc0008db68dff169dd1377013c9","isMergeCommit":false,"messageTitle":"Add 3 use cases under DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":6}}},{"hash":"e0b45d7483e128d212d760f2aebcd40a68645b73","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39d3ae24c098e007b1e271a065f98d59db39f753","isMergeCommit":true,"messageTitle":"Merge pull request #9 from MarcusGitty/master","messageBody":"Add marcusgitty photo and edit aboutUS.md","fileTypesAndContributionMap":{}},{"hash":"41c4fbf36acf8faf382cc50c0cbf90293ecb976b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from MarcusGitty/Developer-Guide","messageBody":"Add \u0027view students details, summary statistics and add students under use cases under DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"864e865503e867bfd1b84f628f41791588ae7beb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea8921570fa4e44532a7df91bcfc4c3dc755d55f","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-F10-2/branch-user-guide","messageBody":"Merge user guide to master","fileTypesAndContributionMap":{}}]}],"Windofbitter":[{"date":"2024-02-28","commitResults":[{"hash":"25c880729081540dc393e6e1900449ad1a1d0c12","isMergeCommit":false,"messageTitle":"Add Baizhou photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f3eec7cf4780ea446359471f75e7142321e023c1","isMergeCommit":false,"messageTitle":"update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":5}}},{"hash":"593a47cddf49f18e4f09c0c5d8ef0c4d24188fb9","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Windofbitter/branch_user_guide","messageBody":"update user guide","fileTypesAndContributionMap":{}}]}],"jessicawyz":[{"date":"2024-02-28","commitResults":[{"hash":"f90ddad86e821f97fe2296ebf8fe57c6ff5b952e","isMergeCommit":false,"messageTitle":"Update AboutUs page for yizheng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"61d58a864f12f21ee7154137fdee2658400c0e22","isMergeCommit":false,"messageTitle":"Add User profile, value proposition and User Stories","messageBody":"Update all to align with v1.1 goals\n","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"e10341f56dcc94085abe152795ee99cd5381d070","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jessicawyz/Update-Developer_Guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"60f6979fca5907b52cc9a17577106c1fafd12e3d","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jessicawyz/master","messageBody":"Update AboutUs page for yizheng","fileTypesAndContributionMap":{}},{"hash":"63046e092c91bae4ceb4cfe9ee1cc24a6110f340","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-developer-guide\u0027 into Developer-Guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"b637d912a35ece4466cea120e66ce21e1a707f01","isMergeCommit":false,"messageTitle":"Edit naming of jessicawyz image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"652ecd3185638939eb1e73cd1e82ed1ff4d8993f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-developer-guide","messageBody":"","fileTypesAndContributionMap":{}}]}],"KinTatHo":[{"date":"2024-02-28","commitResults":[{"hash":"cc81a8dee48f8a2fc7088602ced464ec13191dfb","isMergeCommit":false,"messageTitle":"Add Kin Tat photo and kintat.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":6}}},{"hash":"170e1f482893d99ea9d675a13db30a981447999f","isMergeCommit":false,"messageTitle":"Add newline at READme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-01","commitResults":[{"hash":"392ddd370fc46f75ebf52e5a4f06f9362a49f843","isMergeCommit":false,"messageTitle":"Update README to showcase TuteeTally","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":10}}},{"hash":"5a60b5c7d94b4f19bba337b8072a68e1682b8b0e","isMergeCommit":false,"messageTitle":"Update Yizheng and my profile pic to be our github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-03","commitResults":[{"hash":"c458beac5f27711ddddebdc1e913b24b0b3adedb","isMergeCommit":true,"messageTitle":"Merge pull request #25 from AY2324S2-CS2103T-F10-2/readme","messageBody":"Update README to showcase TuteeTally","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"d6a499db6e9cc45f887642a007b78241202aad80","isMergeCommit":true,"messageTitle":"Merge pull request #29 from AY2324S2-CS2103T-F10-2/branch-developer-guide","messageBody":"Merge developer guide to master for deployment onto the site","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"0nesheep":{"docs":24,"functional-code":0,"test-code":0},"MarcusGitty":{"docs":85,"functional-code":0,"test-code":0},"Windofbitter":{"docs":18,"functional-code":0,"test-code":0},"jessicawyz":{"docs":20,"functional-code":0,"test-code":0},"KinTatHo":{"docs":61,"functional-code":0,"test-code":0}},"authorContributionVariance":{"0nesheep":1291.3221,"MarcusGitty":1018.2643,"Windofbitter":101.23969,"jessicawyz":106.247925,"KinTatHo":371.23965},"authorDisplayNameMap":{"0nesheep":"CS2103T-F10-2 LIU ..YANG","MarcusGitty":"CS2103T-F10-2 MARC.. RUI","Windofbitter":"CS2103T-F10-2 BAIZ.. CAI","jessicawyz":"CS2103T-F10-2 WU Y..HENG","KinTatHo":"CS2103T-F10-2 HO K.. TAT"}} diff --git a/AY2324S2-CS2103T-F10-3_tp_master/authorship.json b/AY2324S2-CS2103T-F10-3_tp_master/authorship.json index fe51488c..1ded7e16 100644 --- a/AY2324S2-CS2103T-F10-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F10-3_tp_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"cliftonchee"},"content":"### Ang Zi Jun Dayn","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"cliftonchee"},"content":"\u003cimg src\u003d\"images/dayn-1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"cliftonchee"},"content":"[[github](https://github.com/dayn-1)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"cliftonchee"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"cliftonchee"},"content":"### Chee Wei Xiong Clifton","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"cliftonchee"},"content":"\u003cimg src\u003d\"images/cliftonchee.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"cliftonchee"},"content":"[[github](http://github.com/cliftonchee)]","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"cliftonchee"},"content":"* Role: Documentation","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"cliftonchee"},"content":"### Jaime Ng Jia Min","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"cliftonchee"},"content":"\u003cimg src\u003d\"images/thatgirljam.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"cliftonchee"},"content":"[[github](http://github.com/thatgirljam)]","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"cliftonchee"},"content":"* Role: Testing","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"cliftonchee"},"content":"### Lim Rik","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"cliftonchee"},"content":"\u003cimg src\u003d\"images/limrik.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"cliftonchee"},"content":"[[github](http://github.com/limrik)]","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"cliftonchee"},"content":"* Role: Code quality, Integration","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"cliftonchee"},"content":"### Low Xue Ling","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"cliftonchee"},"content":"\u003cimg src\u003d\"images/xuelinglow.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"cliftonchee"},"content":"[[github](http://github.com/xuelinglow)]","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"cliftonchee"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":36,"cliftonchee":20}}] diff --git a/AY2324S2-CS2103T-F10-3_tp_master/commits.json b/AY2324S2-CS2103T-F10-3_tp_master/commits.json index bf515108..40f72212 100644 --- a/AY2324S2-CS2103T-F10-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-F10-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xuelinglow":[{"date":"2024-02-26","commitResults":[{"hash":"60140fddf4b87e9814941999e41a827c1e8df916","isMergeCommit":false,"messageTitle":"Tutorial: Adding a command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":197,"deletions":12},"test-code":{"insertions":111,"deletions":13}}},{"hash":"51ac38ab9e498ad935592942169f9cdfd52ca285","isMergeCommit":true,"messageTitle":"Merge pull request #1 from xuelinglow/tutorial-adding-command","messageBody":"Tutorial adding command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"8eb8572994384f65edc39c9318d5b73024ca1957","isMergeCommit":false,"messageTitle":"Revert \"Tutorial adding command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":197},"test-code":{"insertions":13,"deletions":111}}},{"hash":"bae7d62c9565035abd38ca730ee9d5aec3c43172","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F10-3/revert-1-tutorial-adding-command","messageBody":"Revert \"Tutorial adding command\"","fileTypesAndContributionMap":{}}]}],"limrik":[],"dayn-1":[{"date":"2024-02-26","commitResults":[{"hash":"99e9801c9226edd9b5275e90534dbb51cffe1999","isMergeCommit":false,"messageTitle":"Add config changes for MarkBind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"ThatGirlJam":[],"cliftonchee":[{"date":"2024-02-26","commitResults":[{"hash":"56c596beb4c4d3873db8c729eafa8c9fc27b7d75","isMergeCommit":false,"messageTitle":"Test CodeCov","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"6b7579fbbd898771b0c8044ef6362424dfa0135f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Rename codecov org name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"xuelinglow":{"docs":0,"functional-code":0,"test-code":0},"limrik":{"docs":0,"functional-code":0,"test-code":0},"dayn-1":{"docs":0,"functional-code":0,"test-code":0},"ThatGirlJam":{"docs":0,"functional-code":0,"test-code":0},"cliftonchee":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"xuelinglow":26613.36,"limrik":0.0,"dayn-1":0.64000005,"ThatGirlJam":0.0,"cliftonchee":1.4400002},"authorDisplayNameMap":{"xuelinglow":"CS2103T-F10-3 LOW ..LING","limrik":"CS2103T-F10-3 LIM .. RIK","dayn-1":"CS2103T-F10-3 ANG ..DAYN","ThatGirlJam":"CS2103T-F10-3 JAIM.. MIN","cliftonchee":"CS2103T-F10-3 CHEE..FTON"}} +{"authorDailyContributionsMap":{"xuelinglow":[{"date":"2024-02-26","commitResults":[{"hash":"60140fddf4b87e9814941999e41a827c1e8df916","isMergeCommit":false,"messageTitle":"Tutorial: Adding a command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":197,"deletions":12},"test-code":{"insertions":111,"deletions":13}}},{"hash":"51ac38ab9e498ad935592942169f9cdfd52ca285","isMergeCommit":true,"messageTitle":"Merge pull request #1 from xuelinglow/tutorial-adding-command","messageBody":"Tutorial adding command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"8eb8572994384f65edc39c9318d5b73024ca1957","isMergeCommit":false,"messageTitle":"Revert \"Tutorial adding command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":197},"test-code":{"insertions":13,"deletions":111}}},{"hash":"bae7d62c9565035abd38ca730ee9d5aec3c43172","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F10-3/revert-1-tutorial-adding-command","messageBody":"Revert \"Tutorial adding command\"","fileTypesAndContributionMap":{}}]}],"limrik":[],"dayn-1":[{"date":"2024-02-26","commitResults":[{"hash":"99e9801c9226edd9b5275e90534dbb51cffe1999","isMergeCommit":false,"messageTitle":"Add config changes for MarkBind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"ThatGirlJam":[],"cliftonchee":[{"date":"2024-02-26","commitResults":[{"hash":"56c596beb4c4d3873db8c729eafa8c9fc27b7d75","isMergeCommit":false,"messageTitle":"Test CodeCov","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"6b7579fbbd898771b0c8044ef6362424dfa0135f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Rename codecov org name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"369d5d67b2f8e08d2beb321748842eec486abf42","isMergeCommit":false,"messageTitle":"Update About Us Page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":25}}},{"hash":"db4e1f75dd480d6123e6e2644292bd83a65fac03","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F10-3:master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3f147112f372ccf321c5f5923c973b4fe18dcf46","isMergeCommit":true,"messageTitle":"Merge pull request #5 from cliftonchee/about-us","messageBody":"Update About Us Page","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xuelinglow":{"docs":0,"functional-code":0,"test-code":0},"limrik":{"docs":0,"functional-code":0,"test-code":0},"dayn-1":{"docs":0,"functional-code":0,"test-code":0},"ThatGirlJam":{"docs":0,"functional-code":0,"test-code":0},"cliftonchee":{"docs":20,"functional-code":0,"test-code":0}},"authorContributionVariance":{"xuelinglow":16495.883,"limrik":0.0,"dayn-1":0.33057854,"ThatGirlJam":0.0,"cliftonchee":165.86778},"authorDisplayNameMap":{"xuelinglow":"CS2103T-F10-3 LOW ..LING","limrik":"CS2103T-F10-3 LIM .. RIK","dayn-1":"CS2103T-F10-3 ANG ..DAYN","ThatGirlJam":"CS2103T-F10-3 JAIM.. MIN","cliftonchee":"CS2103T-F10-3 CHEE..FTON"}} diff --git a/AY2324S2-CS2103T-F11-4_tp_master/commits.json b/AY2324S2-CS2103T-F11-4_tp_master/commits.json index 20d08935..046d2141 100644 --- a/AY2324S2-CS2103T-F11-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-F11-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"donwong2308":[{"date":"2024-02-26","commitResults":[{"hash":"3a2275bf4c9b5cbd614c3e34a7fdf86e6550d053","isMergeCommit":true,"messageTitle":"Merge pull request #9 from larainezo/master","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"001af1c1b7a333b33f806472cc3193c7e7a3b629","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":2,"deletions":3}}}]}],"PallonCX":[{"date":"2024-03-01","commitResults":[{"hash":"9cf1c3b9899726161ebce728598f7a754b443177","isMergeCommit":true,"messageTitle":"Merge pull request #22 from donwong2308/v1.1","messageBody":" Update README","fileTypesAndContributionMap":{}},{"hash":"4d3f594105348c134c3a9ee8db24c025d556689c","isMergeCommit":false,"messageTitle":"Modify target user and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-02","commitResults":[{"hash":"d55f308a33330a2bb4b95f4eb89eb9367b093c74","isMergeCommit":false,"messageTitle":"Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":93,"deletions":20}}},{"hash":"514a37dca07bb32c0af31f16df2c9951eef2fd40","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-dg","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"4d891eb1b7a0d2d2fd3a584d546019ff1a80a054","isMergeCommit":true,"messageTitle":"Merge pull request #35 from larainezo/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]}],"larainezo":[{"date":"2024-02-26","commitResults":[{"hash":"1df3ca051a818ba4a7628523abbda0f4d597b561","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"aec9c559bb273a63e2f7e6cde9bddd90eab6f779","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":17}}},{"hash":"179364ead0f77323212d63b20cbe58ea8942e87b","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"15e51298e800190edb04e3efc8ce0fe7ac6b8e12","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"65b059c5931de129fc432881028efda6ba59a93e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":4}}},{"hash":"4dcc6bd3309df14359e6b2a1e0b3f26fba29aa45","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"64b44d83f67621b7c97a5714b4afb1017200d8b6","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"7557381158163851128e40c1cf4d5bd6bd79e520","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"315c12e127dd553b673f1abce4dc7f1aa0641d21","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"4907f1a9c5668ac7b897be507c6fcfefe50b6ff3","isMergeCommit":true,"messageTitle":"Merge pull request #24 from JustWeiHao/branch-dg","messageBody":"Modify NFR, Glossary","fileTypesAndContributionMap":{}},{"hash":"9d6ffaa66450a910033cdff4f70f6c07ef79a4b7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-03","commitResults":[{"hash":"81493bc9112609db819279d9e78bbe1af7aff306","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":7}}},{"hash":"dfee1b9ea82097740b04c4ed9ce05a3a66a73dfd","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6383e85565de339e70a286006cfda0710f962fbf","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ec0c2c9b547a1af3b963d616042947dff6353342","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}},{"hash":"dfbf30aeb3c7d0d5e2bb8dd94dcbd1128188b18f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"398de2a3194717cc64c3e0c9d86d0f28c1da93c6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"nyankoclaws":[{"date":"2024-02-26","commitResults":[{"hash":"d86441e4857690f5052eb17a685298526e37d468","isMergeCommit":true,"messageTitle":"Merge pull request #13 from larainezo/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"d499a0b46969ed35a01b59fdffc319ac3b9dd7f4","isMergeCommit":false,"messageTitle":"Edit UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":107}}},{"hash":"28aae27a152c8eb58bed92076b4f0bde355c21cd","isMergeCommit":true,"messageTitle":"Merge pull request #15 from nyankoclaws/master","messageBody":"Edit UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"46f087ad6d0a934862344c34776272fc444ff5e1","isMergeCommit":true,"messageTitle":"Merge pull request #25 from PallonCX/branch-dg","messageBody":"Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"7e3712d83727cf07092f24744154d7ec466dd97f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"JustWeiHao":[{"date":"2024-02-26","commitResults":[{"hash":"bf101303323cd86624043e2b2751d07d3ad0f3ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"69e14a5f14b6b6c4f833462075a49f3d8d401759","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"1e3c19ca6a7c8d67d0ddce0533e01e4fee7700ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83c1884131ca9d2215e6b988225b6c4f4f262da7","isMergeCommit":true,"messageTitle":"Merge pull request #23 from PallonCX/branch-dg","messageBody":"Modify target user and value proposition","fileTypesAndContributionMap":{}},{"hash":"66ded8a134a5b07c89fcc9f2fb1c13ca973e3a68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"69b81be013de514061038b0828c59df06c7cdfb3","isMergeCommit":false,"messageTitle":"Modify developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":2}}}]},{"date":"2024-03-02","commitResults":[{"hash":"db05105e756811d0b108d0af0ee5285ec80df22b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from larainezo/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"a125bde2117d42649dfd04e2c98da9fa95d21f67","isMergeCommit":true,"messageTitle":"Merge pull request #28 from nyankoclaws/branch-edit-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"4e6eaa6ea601b539cb64ac621d402c7921d4ed7d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from larainezo/v1.1","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"donwong2308":{"docs":2,"functional-code":2,"test-code":0},"PallonCX":{"docs":99,"functional-code":0,"test-code":0},"larainezo":{"docs":59,"functional-code":0,"test-code":0},"nyankoclaws":{"docs":44,"functional-code":0,"test-code":0},"JustWeiHao":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"donwong2308":6.694214,"PallonCX":1048.4463,"larainezo":1447.6859,"nyankoclaws":1879.7191,"JustWeiHao":18.59504},"authorDisplayNameMap":{"donwong2308":"CS2103T-F11-4 WONG..AVON","PallonCX":"CS2103T-F11-4 TAN ..IANG","larainezo":"CS2103T-F11-4 LIM ..AINE","nyankoclaws":"CS2103T-F11-4 ANG ..HAEL","JustWeiHao":"CS2103T-F11-4 CHAN.. HAO"}} +{"authorDailyContributionsMap":{"donwong2308":[{"date":"2024-02-26","commitResults":[{"hash":"3a2275bf4c9b5cbd614c3e34a7fdf86e6550d053","isMergeCommit":true,"messageTitle":"Merge pull request #9 from larainezo/master","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"001af1c1b7a333b33f806472cc3193c7e7a3b629","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":2,"deletions":3}}}]}],"PallonCX":[{"date":"2024-03-01","commitResults":[{"hash":"9cf1c3b9899726161ebce728598f7a754b443177","isMergeCommit":true,"messageTitle":"Merge pull request #22 from donwong2308/v1.1","messageBody":" Update README","fileTypesAndContributionMap":{}},{"hash":"4d3f594105348c134c3a9ee8db24c025d556689c","isMergeCommit":false,"messageTitle":"Modify target user and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-02","commitResults":[{"hash":"d55f308a33330a2bb4b95f4eb89eb9367b093c74","isMergeCommit":false,"messageTitle":"Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":93,"deletions":20}}},{"hash":"514a37dca07bb32c0af31f16df2c9951eef2fd40","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-dg","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"4d891eb1b7a0d2d2fd3a584d546019ff1a80a054","isMergeCommit":true,"messageTitle":"Merge pull request #35 from larainezo/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]}],"larainezo":[{"date":"2024-02-26","commitResults":[{"hash":"1df3ca051a818ba4a7628523abbda0f4d597b561","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"aec9c559bb273a63e2f7e6cde9bddd90eab6f779","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":17}}},{"hash":"179364ead0f77323212d63b20cbe58ea8942e87b","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"15e51298e800190edb04e3efc8ce0fe7ac6b8e12","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"65b059c5931de129fc432881028efda6ba59a93e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":4}}},{"hash":"4dcc6bd3309df14359e6b2a1e0b3f26fba29aa45","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"64b44d83f67621b7c97a5714b4afb1017200d8b6","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"7557381158163851128e40c1cf4d5bd6bd79e520","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"315c12e127dd553b673f1abce4dc7f1aa0641d21","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"4907f1a9c5668ac7b897be507c6fcfefe50b6ff3","isMergeCommit":true,"messageTitle":"Merge pull request #24 from JustWeiHao/branch-dg","messageBody":"Modify NFR, Glossary","fileTypesAndContributionMap":{}},{"hash":"9d6ffaa66450a910033cdff4f70f6c07ef79a4b7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-03","commitResults":[{"hash":"81493bc9112609db819279d9e78bbe1af7aff306","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":7}}},{"hash":"dfee1b9ea82097740b04c4ed9ce05a3a66a73dfd","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6383e85565de339e70a286006cfda0710f962fbf","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ec0c2c9b547a1af3b963d616042947dff6353342","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}},{"hash":"dfbf30aeb3c7d0d5e2bb8dd94dcbd1128188b18f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-04","commitResults":[{"hash":"398de2a3194717cc64c3e0c9d86d0f28c1da93c6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"nyankoclaws":[{"date":"2024-02-26","commitResults":[{"hash":"d86441e4857690f5052eb17a685298526e37d468","isMergeCommit":true,"messageTitle":"Merge pull request #13 from larainezo/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"d499a0b46969ed35a01b59fdffc319ac3b9dd7f4","isMergeCommit":false,"messageTitle":"Edit UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":107}}},{"hash":"28aae27a152c8eb58bed92076b4f0bde355c21cd","isMergeCommit":true,"messageTitle":"Merge pull request #15 from nyankoclaws/master","messageBody":"Edit UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"46f087ad6d0a934862344c34776272fc444ff5e1","isMergeCommit":true,"messageTitle":"Merge pull request #25 from PallonCX/branch-dg","messageBody":"Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"7e3712d83727cf07092f24744154d7ec466dd97f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"JustWeiHao":[{"date":"2024-02-26","commitResults":[{"hash":"bf101303323cd86624043e2b2751d07d3ad0f3ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"69e14a5f14b6b6c4f833462075a49f3d8d401759","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"1e3c19ca6a7c8d67d0ddce0533e01e4fee7700ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83c1884131ca9d2215e6b988225b6c4f4f262da7","isMergeCommit":true,"messageTitle":"Merge pull request #23 from PallonCX/branch-dg","messageBody":"Modify target user and value proposition","fileTypesAndContributionMap":{}},{"hash":"66ded8a134a5b07c89fcc9f2fb1c13ca973e3a68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F11-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"69b81be013de514061038b0828c59df06c7cdfb3","isMergeCommit":false,"messageTitle":"Modify developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":2}}}]},{"date":"2024-03-02","commitResults":[{"hash":"db05105e756811d0b108d0af0ee5285ec80df22b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from larainezo/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"a125bde2117d42649dfd04e2c98da9fa95d21f67","isMergeCommit":true,"messageTitle":"Merge pull request #28 from nyankoclaws/branch-edit-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"4e6eaa6ea601b539cb64ac621d402c7921d4ed7d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from larainezo/v1.1","messageBody":"Update README.md","tags":["v1.1"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"donwong2308":{"docs":2,"functional-code":2,"test-code":0},"PallonCX":{"docs":99,"functional-code":0,"test-code":0},"larainezo":{"docs":59,"functional-code":0,"test-code":0},"nyankoclaws":{"docs":44,"functional-code":0,"test-code":0},"JustWeiHao":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"donwong2308":6.694214,"PallonCX":1048.4463,"larainezo":1447.6859,"nyankoclaws":1879.7191,"JustWeiHao":18.59504},"authorDisplayNameMap":{"donwong2308":"CS2103T-F11-4 WONG..AVON","PallonCX":"CS2103T-F11-4 TAN ..IANG","larainezo":"CS2103T-F11-4 LIM ..AINE","nyankoclaws":"CS2103T-F11-4 ANG ..HAEL","JustWeiHao":"CS2103T-F11-4 CHAN.. HAO"}} diff --git a/AY2324S2-CS2103T-F13-3_tp_master/authorship.json b/AY2324S2-CS2103T-F13-3_tp_master/authorship.json index c1610136..ec352455 100644 --- a/AY2324S2-CS2103T-F13-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F13-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"# MatchMate Developer Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"benson1029"},"content":"John in a NUS computer science student taking various courses with a group project component. He wishes to create groups among his friends / acquaintances and find balanced groups with diverse skillsets out of his own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"benson1029"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"To allow students to find balanced groups with diverse skillsets out of their own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"benson1029"},"content":"|----------|------------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | easily add new coursemates with their information | |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | edit information in the coursemate list | fix typos or inaccurate information about my friends mistakenly inputted into the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | delete an entry from the coursemate list | remove information mistakenly added to the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | add or remove skills of a coursemate | remember the strengths of each coursemate and consider them during team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"benson1029"},"content":"| `* * *` | lazy user | search through my list using specific keywords | avoid scrolling through the entire list |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"benson1029"},"content":"| `* * *` | student finding group project partners | search for coursemates out of my contact list with a specific skillset | find a partner who is interested in or good at that particular course or subject |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | create a group project within the app and add coursemates to the group | remember who is already in the team |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | remove coursemates from a group | maintain information correctness after some coursemates are mistakenly added to the group |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"benson1029"},"content":"| `* *` | user who may not have the best eyesight | change the font size of texts in the app | I can adjust to a size most suited to me |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"benson1029"},"content":"| `* *` | clueless student new to using the app | know what skills I should look out for in my friends | |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"benson1029"},"content":"| `* *` | lazy user | autocomplete some commands with possible inputs | complete my tasks faster |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"benson1029"},"content":"| `* *` | busy user | use the \"up\" arrow key for the app to display the previous command | save time typing a series of similar commands with common substrings |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"benson1029"},"content":"| `* *` | new user | easily find a list of commands and how they are used | start using the app without difficulties |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners among acquaintances | maintain the contact details of my friends (telegram handles) in the app | easily contact potential groupmates who I don\u0027t frequently contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":304,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | input the courses each of my friends are planning to take or confirmed to take | limit my search to friends taking that specific course only |","lastModifiedDate":"2024-03-01"},{"lineNumber":305,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | mark coursemates as either friends or acquaintances | prioritise creating groups with some friends over acquaintances |","lastModifiedDate":"2024-03-01"},{"lineNumber":306,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | set some skills as extremely important | prioritise those skills while searching for team members |","lastModifiedDate":"2024-03-01"},{"lineNumber":307,"author":{"gitId":"benson1029"},"content":"| `* *` | student creating a group | search for possible combinations that match the required types of roles and skills | form project groups that require different kinds of roles or skills per member |","lastModifiedDate":"2024-03-01"},{"lineNumber":308,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save a certain filter or search setting with a label | reuse my past search setting when I take courses of similar nature |","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save the set of friends I already contacted with and their respective outcomes | know who else to consider and contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"benson1029"},"content":"| `* *` | user who primarily used other formats to organize contacts | import data from a file | save the hassle of manually adding to the contact list |","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"benson1029"},"content":"| `*` | student bidding for tutorials of courses with group projects | maintain each potential partners\u0027 availability for different tutorial slots | decide on a common tutorial slot to bid for |","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"benson1029"},"content":"| `*` | student with past group project experiences | rate and review my group members after completing a project together | remember their skills, work ethics and collaboration styles during the next team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"benson1029"},"content":"| `*` | user with colour vision deficiency | customize the app\u0027s colour palette | better suit my visual needs and ensure that important elements and information are easily distinguishable |","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"| `*` | busy user | create alias commands | run long repetitive commands using a shorter self-made command |","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"tzaph"},"content":"(For all use cases below, the **System** is `MatchMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"tzaph"},"content":"**Use case: Add a new contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"tzaph"},"content":"1. User requests to add a new contact along with the data.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs invalid or incomplete data. ","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"tzaph"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"tzaph"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"tzaph"},"content":"**Use case: Edit a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"tzaph"},"content":"1. User requests to edit a contact along with the new data.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"tzaph"},"content":"* 1a. User requests to edit a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs invalid or incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"tzaph"},"content":"**Use case: Add skills to a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"tzaph"},"content":"1. User requests to add skills to a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"tzaph"},"content":"2. MatchMate appends the skills to the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill that does not exist yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a warning message indicating that the skill is a new entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"tzaph"},"content":"**Use case: Delete skills from a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"tzaph"},"content":"1. User requests to delete existing skills from a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"tzaph"},"content":"2. MatchMate removes the specified skills from the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill the contact does not have.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a message indicating that the skill cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"tzaph"},"content":"**Use case: Filter contacts based on keyword**","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"tzaph"},"content":"1. User requests to find contacts with the specified keyword.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows a list of the filtered contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"tzaph"},"content":"* 1a. No contacts fulfill the filter search.","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating no contacts can be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"tzaph"},"content":"**Use case: Create a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"tzaph"},"content":"1. User requests to create a group with a specified name.","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"tzaph"},"content":"2. MatchMate acknowledges the creation of the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group name that already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the group already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a group.","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":501,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the group cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"tzaph"},"content":"**Use case: Add a contact to a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":507,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":508,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":509,"author":{"gitId":"tzaph"},"content":"1. User requests to add a contact to a group with a specified name or index from the displayed list.","lastModifiedDate":"2024-03-04"},{"lineNumber":510,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":511,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts in the specified group.","lastModifiedDate":"2024-03-04"},{"lineNumber":512,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":513,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":514,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":515,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":516,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":517,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a name or index no contacts correspond to.","lastModifiedDate":"2024-03-04"},{"lineNumber":518,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the contact doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":519,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":520,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":521,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":522,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a group name that doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":523,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the group doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":524,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":525,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":526,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":528,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"tzaph"},"content":"* 1d. The contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":533,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate shows a message indicating the contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"yuhinarita"},"content":"1. **Environment**: Should work on any _mainstream_ OS as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-01"},{"lineNumber":540,"author":{"gitId":"yuhinarita"},"content":"2. **Performance**: Should respond to user interaction within 3 seconds at most for typical usage (unless it is lagging due to reasons external to the app).","lastModifiedDate":"2024-03-01"},{"lineNumber":541,"author":{"gitId":"yuhinarita"},"content":"3. **Performance**: Should be able to hold up to 1000 _coursemates_ without a noticeable sluggishness in performance (as specified above) for typical usage.","lastModifiedDate":"2024-03-01"},{"lineNumber":542,"author":{"gitId":"yuhinarita"},"content":"4. **Resilience**: Should gracefully handle commonly anticipated errors (e.g. incorrect _command_ input) without crashing or losing saved data.","lastModifiedDate":"2024-03-01"},{"lineNumber":543,"author":{"gitId":"yuhinarita"},"content":"5. **Accessibility**: Should notify the user whether a _command_ is successful or has failed.","lastModifiedDate":"2024-03-01"},{"lineNumber":544,"author":{"gitId":"yuhinarita"},"content":"6. **Accessibility**: Should be accessible to English speakers with average typing speed.","lastModifiedDate":"2024-03-01"},{"lineNumber":545,"author":{"gitId":"yuhinarita"},"content":"7. **Accessibility**: Usage of basic _commands_ (e.g. add, edit) should be learnable within a day.","lastModifiedDate":"2024-03-01"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":550,"author":{"gitId":"yuhinarita"},"content":"* **Command**: A user input that will cause the application to perform an operation according to the MatchMate UserGuide","lastModifiedDate":"2024-03-01"},{"lineNumber":551,"author":{"gitId":"yuhinarita"},"content":"* **Coursemate**: A friend or classmate that you expect to form a _group_ based on certain _skills_ they might have","lastModifiedDate":"2024-03-01"},{"lineNumber":552,"author":{"gitId":"yuhinarita"},"content":"* **Group**: A grouping/team of _coursemates_ for a course, project, or activity","lastModifiedDate":"2024-03-01"},{"lineNumber":553,"author":{"gitId":"yuhinarita"},"content":"* **Skill**: Knowledge, ability, or experience that a _coursemate_ has ","lastModifiedDate":"2024-03-01"},{"lineNumber":554,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":564,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":565,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":603,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yuhinarita":12,"benson1029":32,"tzaph":193,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"# MatchMate User Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"Matchmate is a **desktop app to create groups among their friends / acquaintances,","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"as well as to allow students to find balanced groups with diverse skillsets out of their own contact list.** ","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"It is optimized for Command Line Interface space(CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"1. Download the latest `matchmate.jar`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your app.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar matchmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`: Adds a contact named `John Doe` to the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" e.g. in `add NAME`, `NAME` is a parameter which can be used as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" e.g `add NAME [-p PHONE_NUMBER]` can be used as `add John Doe -p 8762318` or as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" e.g. `[-s SKILL]…​` can be used as ` ` (i.e. 0 times), `-s C++`, `-s C++ -s Python` etc.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"Adds a contact to the contact list. A name will be required, and all other information will be optional.","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol , and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":"- `PHONE_NUMBER` (optional): Phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":"- `EMAIL` (optional): Email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the person. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:** A person can have any number of skills (including 0)","lastModifiedDate":"2024-03-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe`","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"Lists all contacts in the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"Expected output:","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Listed all contacts`","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"Edits an existing contact with a given name. This command supports changing the name, phone number and email.","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":"Format: `edit NAME [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]`","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_NAME` (optional): New name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol, and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_PHONE_NUMBER` (optional): New phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_EMAIL` (optional): New email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"ℹ","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":"When supplying a name to identify an existing contact, you can use the following shortcuts:","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":"- `#1`, `#2`, …, `#n` (where n is the number of contacts currently displayed in the contact list panel) – `#k` references the k-th contact currently displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":"- `##` – References the contact currently displayed in the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":"- A substring of the name instead of the full name.","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" - In the event of multiple matches (the substring appears in multiple contacts), you will receive the following message: `NOTICE: There are multiple contacts with this name shown below. Retry the command by specifying the index of the contact in the list, example: “#1”.` and the list of matching contacts will be displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" - No side effects will be made by the current command.","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" - You should retry the command by finding the contact on the list and using the hashtag notation (`#`) to identify the contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" Example:","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" - You have the following contacts listed in the contact list panel:","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" `#1 Benson`","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" `#2 Ben`","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" Typing `edit Ben` will display a warning message for having multiple matches.","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" - Case 1 Edit Benson:","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit Benson ...` or just its substring `edit Bens ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" - Alternatively, you can use the alias `edit #1 ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" - Case 2 Edit Ben:","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit #2 ...` as you must specify its index in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John Doe -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":"- `edit #1 -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":"### Add a skill to a contact : `add-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":"Adds a skill to a contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add-skill NAME [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the person. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":"Possible outputs:","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Skill(s) have been added`","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" The skills will be added.","lastModifiedDate":"2024-03-01"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":" The edited contact will be displayed on the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: WARNING: the following skill(s) has not been added to any other contacts, please ensure it is not misspelt: “V++”, “Leadershipp”. Skills have been added`","lastModifiedDate":"2024-03-01"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" The skills will be added.","lastModifiedDate":"2024-03-01"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" The edited contact will be displayed on the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: ERROR: Cannot find contact with name “Jane Doe”.`","lastModifiedDate":"2024-03-01"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: ERROR: Cannot find contact with index “#10”.`","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a skill from a contact : `delete-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a skill from a contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-skill NAME [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL`: (zero or multiple allowed): Skill(s) of the person. These must be existing skills that the contact contains.","lastModifiedDate":"2024-03-01"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":194,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":195,"author":{"gitId":"Ryan-Reno"},"content":"### Search contacts with a keyword: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":196,"author":{"gitId":"Ryan-Reno"},"content":"Searches contacts that include a matching keyword, in their name, skills or groups. More relevant fields can be supported in the future.","lastModifiedDate":"2024-03-01"},{"lineNumber":197,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":"To match a contact’s skill or group, the keyword should match exactly with the skill or group. To match a contact’s name, the keyword can be a case-insensitive substring of the name.","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":202,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":"- `KEYWORD`: The keyword of the search. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Ryan-Reno"},"content":"- `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":"- `find C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":"- `find CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a contact with a given name.","lastModifiedDate":"2024-03-01"},{"lineNumber":213,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":215,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":216,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":217,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":220,"author":{"gitId":"Ryan-Reno"},"content":"- `delete ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":221,"author":{"gitId":"Ryan-Reno"},"content":"- `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":222,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":"### Create group project: `create-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":224,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":225,"author":{"gitId":"Ryan-Reno"},"content":"Creates an empty group project. Other team members can then be added once the group has been created.","lastModifiedDate":"2024-03-01"},{"lineNumber":226,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":227,"author":{"gitId":"Ryan-Reno"},"content":"Format: `create-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":230,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: The group name. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":"Example: `create-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":234,"author":{"gitId":"Ryan-Reno"},"content":"### Add contacts to group: `add-member`","lastModifiedDate":"2024-03-01"},{"lineNumber":235,"author":{"gitId":"Ryan-Reno"},"content":"Adds a team member to an existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":237,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add-member GROUP_NAME -n CONTACT_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":238,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME: Name of the existing group.`","lastModifiedDate":"2024-03-01"},{"lineNumber":241,"author":{"gitId":"Ryan-Reno"},"content":"- `CONTACT_NAME: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).`","lastModifiedDate":"2024-03-01"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":244,"author":{"gitId":"Ryan-Reno"},"content":"- `add-member CS2103T_G18 -n Ivan`","lastModifiedDate":"2024-03-01"},{"lineNumber":245,"author":{"gitId":"Ryan-Reno"},"content":"- `add-member CS2103T_G18 -n #1`","lastModifiedDate":"2024-03-01"},{"lineNumber":246,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":247,"author":{"gitId":"Ryan-Reno"},"content":"ℹ","lastModifiedDate":"2024-03-01"},{"lineNumber":248,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":249,"author":{"gitId":"Ryan-Reno"},"content":"Different from names from the contact list, group names must be an exact match.","lastModifiedDate":"2024-03-01"},{"lineNumber":250,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":251,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a group: `delete-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":252,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a group","lastModifiedDate":"2024-03-01"},{"lineNumber":253,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":254,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":256,"author":{"gitId":"Ryan-Reno"},"content":"Example: `delete-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":257,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":259,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":260,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"Ryan-Reno"},"content":"### Save and load the state of app","lastModifiedDate":"2024-03-01"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"Ryan-Reno"},"content":"Load the saved data when starting the app. Save the state of contacts and groups every time it is updated via adding or editing. This should run automatically on start and subsequently after a command that alters the state of the app (e.g. add, edit).","lastModifiedDate":"2024-03-01"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":279,"author":{"gitId":"Ryan-Reno"},"content":"MatchMate data are saved automatically as a JSON file `[JAR file location]/data/matchmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":281,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":284,"author":{"gitId":"Ryan-Reno"},"content":"If your changes to the data file makes its format invalid, MatchMate will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":285,"author":{"gitId":"Ryan-Reno"},"content":"Furthermore, certain edits can cause the MatchMate to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-01"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"Ryan-Reno"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MatchMate home folder.","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":308,"author":{"gitId":"Ryan-Reno"},"content":"**Add contact** | `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​` \u003cbr\u003e e.g., `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"Ryan-Reno"},"content":"**Add group member** | `add-member GROUP_NAME -n CONTACT_NAME` \u003cbr\u003e e.g., `add-member CS2103T_G18 -n Ivan`","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"Ryan-Reno"},"content":"**Add skill** | ` add-skill NAME [-s SKILL]...` \u003cbr\u003e e.g., `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"Ryan-Reno"},"content":"**Create group** | `create-group GROUP_NAME` \u003cbr\u003e e.g., `create-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"Ryan-Reno"},"content":"**Delete Contact** | `delete NAME` \u003cbr\u003e e.g., `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"Ryan-Reno"},"content":"**Delete group** | `delete-group GROUP_NAME` \u003cbr\u003e e.g., `delete-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"Ryan-Reno"},"content":"**Delete Skill** | `delete-skill NAME [-s SKILL]…​` \u003cbr\u003e e.g., `delete-skill John Doe -s C++ -s Leadership `","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"Ryan-Reno"},"content":"**Edit contact** | `edit NAME [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]…​`\u003cbr\u003e e.g.,`edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":317,"author":{"gitId":"Ryan-Reno"},"content":"**Find** | `find KEYWORD`\u003cbr\u003e e.g., `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ryan-Reno":174,"-":145}}] +[{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"# MatchMate Developer Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"benson1029"},"content":"John in a NUS computer science student taking various courses with a group project component. He wishes to create groups among his friends / acquaintances and find balanced groups with diverse skillsets out of his own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"benson1029"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"To allow students to find balanced groups with diverse skillsets out of their own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"benson1029"},"content":"|----------|------------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | easily add new coursemates with their information | |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | edit information in the coursemate list | fix typos or inaccurate information about my friends mistakenly inputted into the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | delete an entry from the coursemate list | remove information mistakenly added to the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | add or remove skills of a coursemate | remember the strengths of each coursemate and consider them during team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"benson1029"},"content":"| `* * *` | lazy user | search through my list using specific keywords | avoid scrolling through the entire list |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"benson1029"},"content":"| `* * *` | student finding group project partners | search for coursemates out of my contact list with a specific skillset | find a partner who is interested in or good at that particular course or subject |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | create a group project within the app and add coursemates to the group | remember who is already in the team |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | remove coursemates from a group | maintain information correctness after some coursemates are mistakenly added to the group |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"benson1029"},"content":"| `* *` | user who may not have the best eyesight | change the font size of texts in the app | I can adjust to a size most suited to me |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"benson1029"},"content":"| `* *` | clueless student new to using the app | know what skills I should look out for in my friends | |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"benson1029"},"content":"| `* *` | lazy user | autocomplete some commands with possible inputs | complete my tasks faster |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"benson1029"},"content":"| `* *` | busy user | use the \"up\" arrow key for the app to display the previous command | save time typing a series of similar commands with common substrings |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"benson1029"},"content":"| `* *` | new user | easily find a list of commands and how they are used | start using the app without difficulties |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners among acquaintances | maintain the contact details of my friends (telegram handles) in the app | easily contact potential groupmates who I don\u0027t frequently contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":304,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | input the courses each of my friends are planning to take or confirmed to take | limit my search to friends taking that specific course only |","lastModifiedDate":"2024-03-01"},{"lineNumber":305,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | mark coursemates as either friends or acquaintances | prioritise creating groups with some friends over acquaintances |","lastModifiedDate":"2024-03-01"},{"lineNumber":306,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | set some skills as extremely important | prioritise those skills while searching for team members |","lastModifiedDate":"2024-03-01"},{"lineNumber":307,"author":{"gitId":"benson1029"},"content":"| `* *` | student creating a group | search for possible combinations that match the required types of roles and skills | form project groups that require different kinds of roles or skills per member |","lastModifiedDate":"2024-03-01"},{"lineNumber":308,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save a certain filter or search setting with a label | reuse my past search setting when I take courses of similar nature |","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save the set of friends I already contacted with and their respective outcomes | know who else to consider and contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"benson1029"},"content":"| `* *` | user who primarily used other formats to organize contacts | import data from a file | save the hassle of manually adding to the contact list |","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"benson1029"},"content":"| `*` | student bidding for tutorials of courses with group projects | maintain each potential partners\u0027 availability for different tutorial slots | decide on a common tutorial slot to bid for |","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"benson1029"},"content":"| `*` | student with past group project experiences | rate and review my group members after completing a project together | remember their skills, work ethics and collaboration styles during the next team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"benson1029"},"content":"| `*` | user with colour vision deficiency | customize the app\u0027s colour palette | better suit my visual needs and ensure that important elements and information are easily distinguishable |","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"| `*` | busy user | create alias commands | run long repetitive commands using a shorter self-made command |","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"tzaph"},"content":"(For all use cases below, the **System** is `MatchMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"tzaph"},"content":"**Use case: Add a new contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"tzaph"},"content":"1. User requests to add a new contact along with the data.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs invalid or incomplete data. ","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"tzaph"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"tzaph"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"tzaph"},"content":"**Use case: Edit a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"tzaph"},"content":"1. User requests to edit a contact along with the new data.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"tzaph"},"content":"* 1a. User requests to edit a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs invalid or incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"tzaph"},"content":"**Use case: Add skills to a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"tzaph"},"content":"1. User requests to add skills to a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"tzaph"},"content":"2. MatchMate appends the skills to the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill that does not exist yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a warning message indicating that the skill is a new entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"tzaph"},"content":"**Use case: Delete skills from a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"tzaph"},"content":"1. User requests to delete existing skills from a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"tzaph"},"content":"2. MatchMate removes the specified skills from the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill the contact does not have.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a message indicating that the skill cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"tzaph"},"content":"**Use case: Filter contacts based on keyword**","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"tzaph"},"content":"1. User requests to find contacts with the specified keyword.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows a list of the filtered contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"tzaph"},"content":"* 1a. No contacts fulfill the filter search.","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating no contacts can be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"tzaph"},"content":"**Use case: Create a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"tzaph"},"content":"1. User requests to create a group with a specified name.","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"tzaph"},"content":"2. MatchMate acknowledges the creation of the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group name that already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the group already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a group.","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":501,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the group cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"tzaph"},"content":"**Use case: Add a contact to a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":507,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":508,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":509,"author":{"gitId":"tzaph"},"content":"1. User requests to add a contact to a group with a specified name or index from the displayed list.","lastModifiedDate":"2024-03-04"},{"lineNumber":510,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":511,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts in the specified group.","lastModifiedDate":"2024-03-04"},{"lineNumber":512,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":513,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":514,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":515,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":516,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":517,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a name or index no contacts correspond to.","lastModifiedDate":"2024-03-04"},{"lineNumber":518,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the contact doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":519,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":520,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":521,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":522,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a group name that doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":523,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the group doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":524,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":525,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":526,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":528,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"tzaph"},"content":"* 1d. The contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":533,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate shows a message indicating the contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"yuhinarita"},"content":"1. **Environment**: Should work on any _mainstream_ OS as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-01"},{"lineNumber":540,"author":{"gitId":"yuhinarita"},"content":"2. **Performance**: Should respond to user interaction within 3 seconds at most for typical usage (unless it is lagging due to reasons external to the app).","lastModifiedDate":"2024-03-01"},{"lineNumber":541,"author":{"gitId":"yuhinarita"},"content":"3. **Performance**: Should be able to hold up to 1000 _coursemates_ without a noticeable sluggishness in performance (as specified above) for typical usage.","lastModifiedDate":"2024-03-01"},{"lineNumber":542,"author":{"gitId":"yuhinarita"},"content":"4. **Resilience**: Should gracefully handle commonly anticipated errors (e.g. incorrect _command_ input) without crashing or losing saved data.","lastModifiedDate":"2024-03-01"},{"lineNumber":543,"author":{"gitId":"yuhinarita"},"content":"5. **Accessibility**: Should notify the user whether a _command_ is successful or has failed.","lastModifiedDate":"2024-03-01"},{"lineNumber":544,"author":{"gitId":"yuhinarita"},"content":"6. **Accessibility**: Should be accessible to English speakers with average typing speed.","lastModifiedDate":"2024-03-01"},{"lineNumber":545,"author":{"gitId":"yuhinarita"},"content":"7. **Accessibility**: Usage of basic _commands_ (e.g. add, edit) should be learnable within a day.","lastModifiedDate":"2024-03-01"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":550,"author":{"gitId":"yuhinarita"},"content":"* **Command**: A user input that will cause the application to perform an operation according to the MatchMate UserGuide","lastModifiedDate":"2024-03-01"},{"lineNumber":551,"author":{"gitId":"yuhinarita"},"content":"* **Coursemate**: A friend or classmate that you expect to form a _group_ based on certain _skills_ they might have","lastModifiedDate":"2024-03-01"},{"lineNumber":552,"author":{"gitId":"yuhinarita"},"content":"* **Group**: A grouping/team of _coursemates_ for a course, project, or activity","lastModifiedDate":"2024-03-01"},{"lineNumber":553,"author":{"gitId":"yuhinarita"},"content":"* **Skill**: Knowledge, ability, or experience that a _coursemate_ has ","lastModifiedDate":"2024-03-01"},{"lineNumber":554,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":564,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":565,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":603,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yuhinarita":12,"benson1029":32,"tzaph":193,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"# MatchMate User Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"Matchmate is a **desktop app to create groups among their friends / acquaintances,","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"as well as to allow students to find balanced groups with diverse skillsets out of their own contact list.** ","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"It is optimized for Command Line Interface space(CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"1. Download the latest `matchmate.jar`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your app.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar matchmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`: Adds a contact named `John Doe` to the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" e.g. in `add NAME`, `NAME` is a parameter which can be used as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" e.g `add NAME [-p PHONE_NUMBER]` can be used as `add John Doe -p 8762318` or as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" e.g. `[-s SKILL]…​` can be used as ` ` (i.e. 0 times), `-s C++`, `-s C++ -s Python` etc.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":"Adds a contact to the contact list. A name will be required, and all other information will be optional.","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol , and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"- `PHONE_NUMBER` (optional): Phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"- `EMAIL` (optional): Email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the person. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:** A person can have any number of skills (including 0)","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe`","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"Lists all contacts in the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":"Expected output:","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Listed all contacts`","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":"Edits an existing contact with a given name. This command supports changing the name, phone number and email.","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"Format: `edit NAME [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]`","lastModifiedDate":"2024-03-01"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_NAME` (optional): New name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol, and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_PHONE_NUMBER` (optional): New phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_EMAIL` (optional): New email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":"ℹ","lastModifiedDate":"2024-03-01"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":"When supplying a name to identify an existing contact, you can use the following shortcuts:","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":"- `#1`, `#2`, …, `#n` (where n is the number of contacts currently displayed in the contact list panel) – `#k` references the k-th contact currently displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":"- `##` – References the contact currently displayed in the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":"- A substring of the name instead of the full name.","lastModifiedDate":"2024-03-01"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" - In the event of multiple matches (the substring appears in multiple contacts), you will receive the following message: `NOTICE: There are multiple contacts with this name shown below. Retry the command by specifying the index of the contact in the list, example: “#1”.` and the list of matching contacts will be displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" - No side effects will be made by the current command.","lastModifiedDate":"2024-03-01"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" - You should retry the command by finding the contact on the list and using the hashtag notation (`#`) to identify the contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" Example:","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" - You have the following contacts listed in the contact list panel:","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" `#1 Benson`","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" `#2 Ben`","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" Typing `edit Ben` will display a warning message for having multiple matches.","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" - Case 1 Edit Benson:","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit Benson ...` or just its substring `edit Bens ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" - Alternatively, you can use the alias `edit #1 ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" - Case 2 Edit Ben:","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit #2 ...` as you must specify its index in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John Doe -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":"- `edit #1 -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":"### Add a skill to a contact : `add-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":"Adds a skill to a contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add-skill NAME [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the person. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":"Possible outputs:","lastModifiedDate":"2024-03-01"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Skill(s) have been added`","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":" The skills will be added.","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" The edited contact will be displayed on the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: WARNING: the following skill(s) has not been added to any other contacts, please ensure it is not misspelt: “V++”, “Leadershipp”. Skills have been added`","lastModifiedDate":"2024-03-01"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" The skills will be added.","lastModifiedDate":"2024-03-01"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" The edited contact will be displayed on the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: ERROR: Cannot find contact with name “Jane Doe”.`","lastModifiedDate":"2024-03-01"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: ERROR: Cannot find contact with index “#10”.`","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a skill from a contact : `delete-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a skill from a contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-skill NAME [-s SKILL]...`","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL`: (zero or multiple allowed): Skill(s) of the person. These must be existing skills that the contact contains.","lastModifiedDate":"2024-03-01"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":190,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":"### Search contacts with a keyword: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":194,"author":{"gitId":"Ryan-Reno"},"content":"Searches contacts that include a matching keyword, in their name, skills or groups. More relevant fields can be supported in the future.","lastModifiedDate":"2024-03-01"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":196,"author":{"gitId":"Ryan-Reno"},"content":"To match a contact’s skill or group, the keyword should match exactly with the skill or group. To match a contact’s name, the keyword can be a case-insensitive substring of the name.","lastModifiedDate":"2024-03-01"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"Ryan-Reno"},"content":"- `KEYWORD`: The keyword of the search. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-01"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":"- `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":"- `find C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Ryan-Reno"},"content":"- `find CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a contact with a given name.","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":215,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-01"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":218,"author":{"gitId":"Ryan-Reno"},"content":"- `delete ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":219,"author":{"gitId":"Ryan-Reno"},"content":"- `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":220,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":221,"author":{"gitId":"Ryan-Reno"},"content":"### Create group project: `create-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":222,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":"Creates an empty group project. Other team members can then be added once the group has been created.","lastModifiedDate":"2024-03-01"},{"lineNumber":224,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":225,"author":{"gitId":"Ryan-Reno"},"content":"Format: `create-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":226,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":227,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":228,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: The group name. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":230,"author":{"gitId":"Ryan-Reno"},"content":"Example: `create-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":231,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":"### Add contacts to group: `add-member`","lastModifiedDate":"2024-03-01"},{"lineNumber":233,"author":{"gitId":"Ryan-Reno"},"content":"Adds a team member to an existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":234,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":235,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add-member GROUP_NAME -n CONTACT_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":236,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":237,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":238,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME: Name of the existing group.`","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Ryan-Reno"},"content":"- `CONTACT_NAME: Name of the existing contact. Accepts aliases (substrings or in hashtag (#) notation).`","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":241,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":242,"author":{"gitId":"Ryan-Reno"},"content":"- `add-member CS2103T_G18 -n Ivan`","lastModifiedDate":"2024-03-01"},{"lineNumber":243,"author":{"gitId":"Ryan-Reno"},"content":"- `add-member CS2103T_G18 -n #1`","lastModifiedDate":"2024-03-01"},{"lineNumber":244,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":245,"author":{"gitId":"Ryan-Reno"},"content":"ℹ","lastModifiedDate":"2024-03-01"},{"lineNumber":246,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":247,"author":{"gitId":"Ryan-Reno"},"content":"Different from names from the contact list, group names must be an exact match.","lastModifiedDate":"2024-03-01"},{"lineNumber":248,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":249,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a group: `delete-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":250,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a group","lastModifiedDate":"2024-03-01"},{"lineNumber":251,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":252,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":253,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":254,"author":{"gitId":"Ryan-Reno"},"content":"Example: `delete-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":256,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":257,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"Ryan-Reno"},"content":"### Save and load the state of app","lastModifiedDate":"2024-03-01"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"Ryan-Reno"},"content":"Load the saved data when starting the app. Save the state of contacts and groups every time it is updated via adding or editing. This should run automatically on start and subsequently after a command that alters the state of the app (e.g. add, edit).","lastModifiedDate":"2024-03-01"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":277,"author":{"gitId":"Ryan-Reno"},"content":"MatchMate data are saved automatically as a JSON file `[JAR file location]/data/matchmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":282,"author":{"gitId":"Ryan-Reno"},"content":"If your changes to the data file makes its format invalid, MatchMate will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":283,"author":{"gitId":"Ryan-Reno"},"content":"Furthermore, certain edits can cause the MatchMate to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-01"},{"lineNumber":284,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"Ryan-Reno"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MatchMate home folder.","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":306,"author":{"gitId":"Ryan-Reno"},"content":"**Add contact** | `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​` \u003cbr\u003e e.g., `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":307,"author":{"gitId":"Ryan-Reno"},"content":"**Add group member** | `add-member GROUP_NAME -n CONTACT_NAME` \u003cbr\u003e e.g., `add-member CS2103T_G18 -n Ivan`","lastModifiedDate":"2024-03-01"},{"lineNumber":308,"author":{"gitId":"Ryan-Reno"},"content":"**Add skill** | ` add-skill NAME [-s SKILL]...` \u003cbr\u003e e.g., `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"Ryan-Reno"},"content":"**Create group** | `create-group GROUP_NAME` \u003cbr\u003e e.g., `create-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"Ryan-Reno"},"content":"**Delete Contact** | `delete NAME` \u003cbr\u003e e.g., `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"Ryan-Reno"},"content":"**Delete group** | `delete-group GROUP_NAME` \u003cbr\u003e e.g., `delete-group CS2103T_G18`","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"Ryan-Reno"},"content":"**Delete Skill** | `delete-skill NAME [-s SKILL]…​` \u003cbr\u003e e.g., `delete-skill John Doe -s C++ -s Leadership `","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"Ryan-Reno"},"content":"**Edit contact** | `edit NAME [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]…​`\u003cbr\u003e e.g.,`edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"Ryan-Reno"},"content":"**Find** | `find KEYWORD`\u003cbr\u003e e.g., `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ryan-Reno":172,"-":145}}] diff --git a/AY2324S2-CS2103T-F13-3_tp_master/commits.json b/AY2324S2-CS2103T-F13-3_tp_master/commits.json index 55d87da1..c5a24549 100644 --- a/AY2324S2-CS2103T-F13-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-F13-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yuhinarita":[{"date":"2024-03-01","commitResults":[{"hash":"060a43be84472174da20135a266c6ed1955cc21a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"5ed8e2622e70307d2075e92240f1754ef67dc6e8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"2610e6db3f91f2ed6fcd80b95d269a8859a9795b","isMergeCommit":true,"messageTitle":"Merge pull request #12 from yuhinarita/master","messageBody":"Update Developer Guide on new NFRs and Glossary","fileTypesAndContributionMap":{}}]}],"Ryan-Reno":[{"date":"2024-03-01","commitResults":[{"hash":"1a2a37387f96931a73fb4d2c838e67ed2fc6cb26","isMergeCommit":false,"messageTitle":"Update User Guide with new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":244,"deletions":69}}},{"hash":"1fb70614f4713aabea71e2700c6ade2ee3d1e9bb","isMergeCommit":false,"messageTitle":"Remove possible outputs for each command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":65}}},{"hash":"182a6b706b552ca36d048b92d97247d4aac272dc","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Ryan-Reno/master","messageBody":"Update User Guide with new features","fileTypesAndContributionMap":{}}]}],"benson1029":[{"date":"2024-03-01","commitResults":[{"hash":"61c66cf25b870e97e496883d819c239e49661fbe","isMergeCommit":false,"messageTitle":"Update developer guide to include user profile and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":16}}},{"hash":"cb835e8eb9170ed963d1c099ae48413bdd78bd92","isMergeCommit":true,"messageTitle":"Merge pull request #13 from benson1029/DG-user-stories","messageBody":"Update developer guide to include user profile and user stories","fileTypesAndContributionMap":{}}]}],"tzaph":[{"date":"2024-03-04","commitResults":[{"hash":"9da17f1790d16a9caed83f63edb3b409ceedd4d0","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":168,"deletions":12}}},{"hash":"5f4ac74142f5369eb6591ea7ae5f03bd4d00dd3e","isMergeCommit":false,"messageTitle":"Apply changes in DG based on review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":4}}},{"hash":"18fe6fdcfaf40b92ce9cae982afd3c91aa2d7e1d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tzaph/DG-use-cases","messageBody":"Add use cases to the developer guide","fileTypesAndContributionMap":{}}]}],"ivan24004":[{"date":"2024-03-04","commitResults":[{"hash":"29468c70388d5a0ae1fcdffda23c80b566dc1ab4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from tzaph/add-self-photo","messageBody":"Add photo for AboutUs page (tzaph)","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yuhinarita":{"docs":12,"functional-code":0,"test-code":0},"Ryan-Reno":{"docs":174,"functional-code":0,"test-code":0},"benson1029":{"docs":32,"functional-code":0,"test-code":0},"tzaph":{"docs":193,"functional-code":0,"test-code":0},"ivan24004":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"yuhinarita":26.776855,"Ryan-Reno":12123.059,"benson1029":198.42978,"tzaph":4073.0576,"ivan24004":0.0},"authorDisplayNameMap":{"yuhinarita":"CS2103T-F13-3 NARI..YUHI","Ryan-Reno":"CS2103T-F13-3 RYAN.. LIM","benson1029":"CS2103T-F13-3 YEUN..SUNG","tzaph":"CS2103T-F13-3 MAXI..QUOK","ivan24004":"CS2103T-F13-3 TAN ..IONG"}} +{"authorDailyContributionsMap":{"yuhinarita":[{"date":"2024-03-01","commitResults":[{"hash":"060a43be84472174da20135a266c6ed1955cc21a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"5ed8e2622e70307d2075e92240f1754ef67dc6e8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"2610e6db3f91f2ed6fcd80b95d269a8859a9795b","isMergeCommit":true,"messageTitle":"Merge pull request #12 from yuhinarita/master","messageBody":"Update Developer Guide on new NFRs and Glossary","fileTypesAndContributionMap":{}}]}],"Ryan-Reno":[{"date":"2024-03-01","commitResults":[{"hash":"1a2a37387f96931a73fb4d2c838e67ed2fc6cb26","isMergeCommit":false,"messageTitle":"Update User Guide with new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":244,"deletions":69}}},{"hash":"1fb70614f4713aabea71e2700c6ade2ee3d1e9bb","isMergeCommit":false,"messageTitle":"Remove possible outputs for each command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":65}}},{"hash":"182a6b706b552ca36d048b92d97247d4aac272dc","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Ryan-Reno/master","messageBody":"Update User Guide with new features","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e8fc5240f43604e051f585a0e389edae75fb4b4e","isMergeCommit":false,"messageTitle":"Delete helpMessage.png from user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}}]}],"benson1029":[{"date":"2024-03-01","commitResults":[{"hash":"61c66cf25b870e97e496883d819c239e49661fbe","isMergeCommit":false,"messageTitle":"Update developer guide to include user profile and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":16}}},{"hash":"cb835e8eb9170ed963d1c099ae48413bdd78bd92","isMergeCommit":true,"messageTitle":"Merge pull request #13 from benson1029/DG-user-stories","messageBody":"Update developer guide to include user profile and user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"25a629cf73ccdcd898054e5a4eefc4431f94703e","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Ryan-Reno/add-Ryan-info","messageBody":"Delete helpMessage.png from user guide","fileTypesAndContributionMap":{}}]}],"tzaph":[{"date":"2024-03-04","commitResults":[{"hash":"9da17f1790d16a9caed83f63edb3b409ceedd4d0","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":168,"deletions":12}}},{"hash":"5f4ac74142f5369eb6591ea7ae5f03bd4d00dd3e","isMergeCommit":false,"messageTitle":"Apply changes in DG based on review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":4}}},{"hash":"18fe6fdcfaf40b92ce9cae982afd3c91aa2d7e1d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tzaph/DG-use-cases","messageBody":"Add use cases to the developer guide","fileTypesAndContributionMap":{}}]}],"ivan24004":[{"date":"2024-03-04","commitResults":[{"hash":"29468c70388d5a0ae1fcdffda23c80b566dc1ab4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from tzaph/add-self-photo","messageBody":"Add photo for AboutUs page (tzaph)","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yuhinarita":{"docs":12,"functional-code":0,"test-code":0},"Ryan-Reno":{"docs":172,"functional-code":0,"test-code":0},"benson1029":{"docs":32,"functional-code":0,"test-code":0},"tzaph":{"docs":193,"functional-code":0,"test-code":0},"ivan24004":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"yuhinarita":24.75,"Ryan-Reno":11195.075,"benson1029":183.40973,"tzaph":3764.75,"ivan24004":0.0},"authorDisplayNameMap":{"yuhinarita":"CS2103T-F13-3 NARI..YUHI","Ryan-Reno":"CS2103T-F13-3 RYAN.. LIM","benson1029":"CS2103T-F13-3 YEUN..SUNG","tzaph":"CS2103T-F13-3 MAXI..QUOK","ivan24004":"CS2103T-F13-3 TAN ..IONG"}} diff --git a/AY2324S2-CS2103T-T15-2_tp_master/authorship.json b/AY2324S2-CS2103T-T15-2_tp_master/authorship.json index 10cd6374..11bf57ea 100644 --- a/AY2324S2-CS2103T-T15-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T15-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eAronaPro\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"Rikko1204":1,"-":66}}] +[{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"RingoftheKing"},"content":"|----------|-------------------------------------------------------------------------------|--------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | add a new student, prof, TA | know how to contact them |","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | find a student by name or class | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | Group students into classes | know which class my student is in |","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching assistant | find my supervisor(s) | Report any admin issues my students would raise |","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | University student with different friend groups | Tag or categorize my contacts | Search by the friend groups I\u0027m concerned with |","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who wants to meet up with Profs and students | Schedule events to do so | remind myself to meet up or know my free times. |","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant with important people to report to or stay in contact with | pin important contacts | |","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who needs to announce information to his students | copy a (group of) student(s)\u0027 contact info onto my clipboard | announce a message efficiently to many students |","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Forgetful Teaching Assistant | A check for addition of duplicate contacts | can reduce clutter of my list |","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant who might mistype | Have a Confirm Delete warning when doing deletions | Provide a safety net in case I accidentally delete important info |","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant with many students | Personalize contacts with photos | Attribute names to faces and distinguish similar names. |","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"RingoftheKing"},"content":"| `*` | detail-oriented Teaching Assistant | Add a note with additional information about the contact | remind myself of things I may need to follow up on |","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant who tires from work | use an app with a cheerful interface | feel encouraged / at peace |","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant | import and export contact details to/from the app | can easily shift to using this app, or another |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":353,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":363,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":364,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"RingoftheKing":16,"-":392}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eAronaPro\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"Rikko1204":1,"-":66}}] diff --git a/AY2324S2-CS2103T-T15-2_tp_master/commits.json b/AY2324S2-CS2103T-T15-2_tp_master/commits.json index 622d5bb8..c5c7eefd 100644 --- a/AY2324S2-CS2103T-T15-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cheahTJ":[],"Rikko1204":[{"date":"2024-02-28","commitResults":[{"hash":"9c0f64872538fe837c0ea08b11c2e5d910257d6c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"2f9d1510235b6e6a081ac022d3e186c38096ad60","isMergeCommit":false,"messageTitle":"Add MarkBind config","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"40f51af29c3bc5b49329f4959d7f83db4347c2fc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Rikko1204/master","messageBody":"Add MarkBind config","fileTypesAndContributionMap":{}}]}],"RingoftheKing":[],"Ragnapop":[],"hjuntan":[]},"authorFileTypeContributionMap":{"cheahTJ":{"docs":0,"functional-code":0,"test-code":0},"Rikko1204":{"docs":1,"functional-code":0,"test-code":0},"RingoftheKing":{"docs":0,"functional-code":0,"test-code":0},"Ragnapop":{"docs":0,"functional-code":0,"test-code":0},"hjuntan":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"cheahTJ":0.0,"Rikko1204":0.5555555,"RingoftheKing":0.0,"Ragnapop":0.0,"hjuntan":0.0},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN","Rikko1204":"CS2103T-T15-2 CHEN.. MIN","RingoftheKing":"CS2103T-T15-2 GUO ..UHAO","Ragnapop":"CS2103T-T15-2 LOH .. HUN","hjuntan":"CS2103T-T15-2 TAN .. JUN"}} +{"authorDailyContributionsMap":{"cheahTJ":[],"Rikko1204":[{"date":"2024-02-28","commitResults":[{"hash":"9c0f64872538fe837c0ea08b11c2e5d910257d6c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"2f9d1510235b6e6a081ac022d3e186c38096ad60","isMergeCommit":false,"messageTitle":"Add MarkBind config","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"40f51af29c3bc5b49329f4959d7f83db4347c2fc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Rikko1204/master","messageBody":"Add MarkBind config","fileTypesAndContributionMap":{}}]}],"RingoftheKing":[{"date":"2024-03-04","commitResults":[{"hash":"55c3ceb840b378f9e719ec8e18f2fa7f475abd41","isMergeCommit":false,"messageTitle":"Update User Stories in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":9}}}]}],"Ragnapop":[],"hjuntan":[{"date":"2024-03-05","commitResults":[{"hash":"3468524824ca48effada3aec0c987ba152171707","isMergeCommit":true,"messageTitle":"Merge pull request #11 from RingoftheKing/edit-Dev-Guide","messageBody":"Update User Stories in DeveloperGuide.md","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"docs":0,"functional-code":0,"test-code":0},"Rikko1204":{"docs":1,"functional-code":0,"test-code":0},"RingoftheKing":{"docs":16,"functional-code":0,"test-code":0},"Ragnapop":{"docs":0,"functional-code":0,"test-code":0},"hjuntan":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"cheahTJ":0.0,"Rikko1204":0.30555552,"RingoftheKing":68.75,"Ragnapop":0.0,"hjuntan":0.0},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN","Rikko1204":"CS2103T-T15-2 CHEN.. MIN","RingoftheKing":"CS2103T-T15-2 GUO ..UHAO","Ragnapop":"CS2103T-T15-2 LOH .. HUN","hjuntan":"CS2103T-T15-2 TAN .. JUN"}} diff --git a/AY2324S2-CS2103T-T16-1_tp_master/authorship.json b/AY2324S2-CS2103T-T16-1_tp_master/authorship.json index d8bb6e1c..d089c145 100644 --- a/AY2324S2-CS2103T-T16-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T16-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-1/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-1/tp/graph/badge.svg?token\u003d1QYSJLU0BI)](https://codecov.io/gh/AY2324S2-CS2103T-T16-1/tp)","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dedsecrattle":2,"-":13}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"dedsecrattle"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-1/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"dedsecrattle"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-1/tp/graph/badge.svg?token\u003d1QYSJLU0BI)](https://codecov.io/gh/AY2324S2-CS2103T-T16-1/tp)","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dedsecrattle":2,"-":13}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"dedsecrattle"},"content":"### Kumar Prabhat","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"dedsecrattle"},"content":"\u003cimg src\u003d\"images/dedsecrattle.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"dedsecrattle"},"content":"[[github](http://github.com/dedsecrattle)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"dedsecrattle"},"content":"[[portfolio](http://theprabhat.me)]","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"dedsecrattle"},"content":"* Role: Developer","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"dedsecrattle"},"content":"* Responsibilities: Backend, UI, DevOps","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"dedsecrattle":6,"-":45}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eEduLink NUS\u003c/a\u003e","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"dedsecrattle"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-T16-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"dedsecrattle":1,"-":66}}] diff --git a/AY2324S2-CS2103T-T16-1_tp_master/commits.json b/AY2324S2-CS2103T-T16-1_tp_master/commits.json index 71371f5a..73e4ac4a 100644 --- a/AY2324S2-CS2103T-T16-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-T16-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dedsecrattle":[{"date":"2024-03-04","commitResults":[{"hash":"965314a181165c8f7dc259736df5b719b73d24ce","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"b088d98f65970f8d23b3ed36d7e962ae5e4e1ef0","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2324S2-CS2103T-T16-1/dedsecrattle-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"91268970f67506fd0db1ef88ec0c8e5b5aba6523","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"925705f1ba84e29db4e08fcc53bf6bb423cb6f26","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2324S2-CS2103T-T16-1/dedsecrattle-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]}],"Li-Zizhen":[],"Austintjh19":[],"ValenciaLim":[]},"authorFileTypeContributionMap":{"dedsecrattle":{"docs":2,"functional-code":0,"test-code":0},"Li-Zizhen":{"docs":0,"functional-code":0,"test-code":0},"Austintjh19":{"docs":0,"functional-code":0,"test-code":0},"ValenciaLim":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"dedsecrattle":0.74380165,"Li-Zizhen":0.0,"Austintjh19":0.0,"ValenciaLim":0.0},"authorDisplayNameMap":{"dedsecrattle":"CS2103T-T16-1 KUMA..BHAT","Li-Zizhen":"CS2103T-T16-1 LI Z..ZHEN","Austintjh19":"CS2103T-T16-1 TAN ..HENG","ValenciaLim":"CS2103T-T16-1 LIM ..NCIA"}} +{"authorDailyContributionsMap":{"dedsecrattle":[{"date":"2024-03-04","commitResults":[{"hash":"965314a181165c8f7dc259736df5b719b73d24ce","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"b088d98f65970f8d23b3ed36d7e962ae5e4e1ef0","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2324S2-CS2103T-T16-1/dedsecrattle-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"91268970f67506fd0db1ef88ec0c8e5b5aba6523","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"925705f1ba84e29db4e08fcc53bf6bb423cb6f26","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2324S2-CS2103T-T16-1/dedsecrattle-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"f0dc5a768545feaea7fa3dd9d78c32764643a076","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":16}}}]},{"date":"2024-03-05","commitResults":[{"hash":"2970353166be38dea479501a0228390e70a42b37","isMergeCommit":false,"messageTitle":"Update SiteWide Setting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2d02a5c9d7b60f5d0454bb9568ebda7513228b54","isMergeCommit":true,"messageTitle":"Merge pull request #8 from dedsecrattle/docs/about-us","messageBody":"Update AboutUs (Kumar Prabhat)","fileTypesAndContributionMap":{}},{"hash":"33b94379ae235c38142e608b65d4f23ab805f623","isMergeCommit":true,"messageTitle":"Merge pull request #9 from dedsecrattle/docs/site-setting","messageBody":"Update Site wide Settings","fileTypesAndContributionMap":{}}]}],"Li-Zizhen":[],"Austintjh19":[],"ValenciaLim":[]},"authorFileTypeContributionMap":{"dedsecrattle":{"docs":9,"functional-code":0,"test-code":0},"Li-Zizhen":{"docs":0,"functional-code":0,"test-code":0},"Austintjh19":{"docs":0,"functional-code":0,"test-code":0},"ValenciaLim":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"dedsecrattle":47.354168,"Li-Zizhen":0.0,"Austintjh19":0.0,"ValenciaLim":0.0},"authorDisplayNameMap":{"dedsecrattle":"CS2103T-T16-1 KUMA..BHAT","Li-Zizhen":"CS2103T-T16-1 LI Z..ZHEN","Austintjh19":"CS2103T-T16-1 TAN ..HENG","ValenciaLim":"CS2103T-T16-1 LIM ..NCIA"}} diff --git a/AY2324S2-CS2103T-T17-3_tp_master/authorship.json b/AY2324S2-CS2103T-T17-3_tp_master/authorship.json index fe51488c..6a61a61d 100644 --- a/AY2324S2-CS2103T-T17-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T17-3_tp_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"## ClickConnect","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"### Tan Kah Ho Dillon","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"\u003cimg src\u003d\"images/dillontkh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"[[github](https://github.com/dillontkh)]","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"* Responsibilities: Overall project coordination.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"### Baskar Gopinath","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"* Role: Developer","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"### Ng Wei Han, Ryan","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":"### Chee Jing Jie","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"### Tay Rui-Jie","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"\u003cimg src\u003d\"images/ruijietay.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":"[[github](http://github.com/ruijietay)]","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":"[[linkedin](https://www.linkedin.com/in/tayruijie/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"ruijietay":15,"-":43,"dillontkh":4}}] diff --git a/AY2324S2-CS2103T-T17-3_tp_master/commits.json b/AY2324S2-CS2103T-T17-3_tp_master/commits.json index d01fda2f..acd524bb 100644 --- a/AY2324S2-CS2103T-T17-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T17-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"RyanNgWH":[],"bgopi23":[],"ruijietay":[],"jjchee77":[],"dillontkh":[]},"authorFileTypeContributionMap":{"RyanNgWH":{"docs":0,"functional-code":0,"test-code":0},"bgopi23":{"docs":0,"functional-code":0,"test-code":0},"ruijietay":{"docs":0,"functional-code":0,"test-code":0},"jjchee77":{"docs":0,"functional-code":0,"test-code":0},"dillontkh":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"RyanNgWH":0.0,"bgopi23":0.0,"ruijietay":0.0,"jjchee77":0.0,"dillontkh":0.0},"authorDisplayNameMap":{"RyanNgWH":"CS2103T-T17-3 NG W..RYAN","bgopi23":"CS2103T-T17-3 BASK..NATH","ruijietay":"CS2103T-T17-3 TAY ..-JIE","jjchee77":"CS2103T-T17-3 CHEE.. JIE","dillontkh":"CS2103T-T17-3 TAN ..LLON"}} +{"authorDailyContributionsMap":{"RyanNgWH":[],"bgopi23":[],"ruijietay":[{"date":"2024-03-04","commitResults":[{"hash":"3253f45ee0f619c992e774a11e3ae15c9e05d7a7","isMergeCommit":false,"messageTitle":"Update AboutUs to add photo for Ruijie","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":11}}}]},{"date":"2024-03-05","commitResults":[{"hash":"b88142fc36d22893edbe0f4814fb65affb82e87e","isMergeCommit":true,"messageTitle":"Merge pull request #14 from dillontkh/branch-UpdateAboutUs-Dillon","messageBody":"Add profile picture for Dillon","fileTypesAndContributionMap":{}}]}],"jjchee77":[],"dillontkh":[{"date":"2024-03-04","commitResults":[{"hash":"2aa3e39602736096a4469f1dc44ac60ed9206daf","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ruijietay/branch-UpdateAboutUs-Ruijie","messageBody":"Update AboutUs to add photo for Ruijie","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"91c7e138f73a321f0bc1ffea0fe418d2578e18b9","isMergeCommit":false,"messageTitle":"Add picture for dillon","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":14}}}]}]},"authorFileTypeContributionMap":{"RyanNgWH":{"docs":0,"functional-code":0,"test-code":0},"bgopi23":{"docs":0,"functional-code":0,"test-code":0},"ruijietay":{"docs":15,"functional-code":0,"test-code":0},"jjchee77":{"docs":0,"functional-code":0,"test-code":0},"dillontkh":{"docs":4,"functional-code":0,"test-code":0}},"authorContributionVariance":{"RyanNgWH":0.0,"bgopi23":0.0,"ruijietay":93.576385,"jjchee77":0.0,"dillontkh":24.75},"authorDisplayNameMap":{"RyanNgWH":"CS2103T-T17-3 NG W..RYAN","bgopi23":"CS2103T-T17-3 BASK..NATH","ruijietay":"CS2103T-T17-3 TAY ..-JIE","jjchee77":"CS2103T-T17-3 CHEE.. JIE","dillontkh":"CS2103T-T17-3 TAN ..LLON"}} diff --git a/AY2324S2-CS2103T-W08-2_tp_master/authorship.json b/AY2324S2-CS2103T-W08-2_tp_master/authorship.json index a14aaddc..5f095f04 100644 --- a/AY2324S2-CS2103T-W08-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W08-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# VitalConnect","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-2/tp/actions)","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"This product is for clinic assistants that have to keep track of a lot of patient information and requires ","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"the information at a fast pace, thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"__Value proposition:__","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"Clinic assistants are required to take note of a multitude of information regarding the patient, ","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"such as their contact number, any existing medical condition, the specific treatment that they are currently undergoing and much more. ","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"With this product, such information will be readily available while also allowing for quality of life features such as scheduling ","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"appointments and managing medication.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"## Features (V1.2)","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"__Saving the data__","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"* All data is saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"__Clear all existing entries__","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Clear all the existing entries within the local database.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"__Exit the program__","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"* Exits the program. Any data that is not saved cannot be restored upon exiting.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"__Viewing help__","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"* Shows a message explaining the instructions to access the user guide.","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"### Manage Appointments","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"__Create Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"* Create an appointment of a patient, information such as time and name of patient are required when adding.","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"__Delete Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"* Delete an appointment of a patient.","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"__List Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"* List all the appointments that have been created, provide information such as the patient’s name and time of the appointments.","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"### Manage Contact Information","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"__Add patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"* Add contact information, including phone number and email address. If a specific field already exists, the command would fail.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"__Delete patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all contact information, including phone number and email address.","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"__List patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"* List all patient’s contact information.","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"### Manage Patients","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"__Add patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"* Add a new patient to the database so further information about their appointment or contact information can be added.","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"__Delete patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all patients, including their contact and appointment.","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":83,"-":13}},{"path":"bin/main/view/CommandBox.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/DarkTheme.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":".background {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".label {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":".label-bright {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":".label-header {","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":".text-field {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":".tab-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":".table-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":".split-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":".list-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":".list-cell {","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":".list-cell .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":".cell_big_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":".cell_small_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":".stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":".pane-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":".status-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":".result-display {","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":".result-display .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":".status-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":".grid-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":".context-menu {","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":".context-menu .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":".menu-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":".menu .left-container {","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"/*","lastModifiedDate":"2024-03-04"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-04"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-04"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-04"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":".button {","lastModifiedDate":"2024-03-04"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-04"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-04"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-04"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":".button:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-04"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-04"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":234,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":235,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":236,"author":{"gitId":"Ella-e"},"content":".button:focused {","lastModifiedDate":"2024-03-04"},{"lineNumber":237,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-04"},{"lineNumber":238,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":239,"author":{"gitId":"Ella-e"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":240,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":241,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":242,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":243,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":244,"author":{"gitId":"Ella-e"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-04"},{"lineNumber":245,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-04"},{"lineNumber":246,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":247,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":248,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":249,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":250,"author":{"gitId":"Ella-e"},"content":".button:default {","lastModifiedDate":"2024-03-04"},{"lineNumber":251,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":252,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-04"},{"lineNumber":253,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":254,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":255,"author":{"gitId":"Ella-e"},"content":".button:default:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":256,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":257,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":258,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":259,"author":{"gitId":"Ella-e"},"content":".dialog-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":260,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":261,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":262,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-04"},{"lineNumber":264,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2024-03-04"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-04"},{"lineNumber":270,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":271,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":273,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-04"},{"lineNumber":274,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-04"},{"lineNumber":278,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-04"},{"lineNumber":279,"author":{"gitId":"Ella-e"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-04"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":".scroll-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"#cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"Ella-e"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-04"},{"lineNumber":316,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"Ella-e"},"content":"#commandTextField {","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ella-e"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":"#tags {","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ella-e"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"#tags .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":352}},{"path":"bin/main/view/Extensions.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":".error {","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".list-cell:empty {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-background: #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":".tag-selector {","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":".tooltip-text {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":20}},{"path":"bin/main/view/HelpWindow.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"#copyButton {","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"#copyButton:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: gray;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"#copyButton:armed {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"#helpMessageContainer {","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":19}},{"path":"bin/main/view/HelpWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":44}},{"path":"bin/main/view/MainWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":60}},{"path":"bin/main/view/PersonListCard.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":36}},{"path":"bin/main/view/PersonListPanel.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":8}},{"path":"bin/main/view/ResultDisplay.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/StatusBarFooter.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":12}},{"path":"bin/test/view/UiPartTest/invalidFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"Not a valid FXML file","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":1}},{"path":"bin/test/view/UiPartTest/validFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import seedu.address.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":4}},{"path":"bin/test/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"seedu.address.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"### John Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"### Ma Yuehan","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"[[github](https://github.com/MaYuehan)]","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"[[portfolio](team/mayuehan.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"* Responsibilities: ","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"MaYuehan":5,"-":54}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (good to but might not have) - `*`","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":"| `* * *` | new user | have a comprehensive document that details every possible feature. | learn how to use a particular feature |","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | add new patient, either with or without further information about the patient | |","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | delete patient | free storage resources |","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | be able to add the contact information of my patient into the database | I can get in touch with them when needed or under emergency situation |","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | be able to delete the contact information for a particular patient when the information is outdated | I can keep in touch with my patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | list all patients and their contacts | |","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | add appointment to free time slot | easily schedule an appointment and find free time slot for it |","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | delete appointment to free time slot | remove reservation if the patient is unable to attend |","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | list appointments | I can see all the appointments. |","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | add medication instructions for the patient | have a better understanding of the medication history of my patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | list all information about specific patient | see the detail information of the patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | be able to modify/update the information of a particular patient | I can keep the most-updated information |","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | be able to modify an appointment details of a patient | I can keep the most-updated appointment information |","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":"| `* *` | new user | option for undo most precent change | I can quickly fix my mistyped command |","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":"| `* *` | beginner | set the reminder for an appointment | remind me when Im busy with work |","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | mark a reminder as done | better track the undo work |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | mark some of the patients as the special focus | better track the state of illness of patients who are in a very serious state |","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"| `* *` | expert user | have short forms of existing commands | save time on typing the commands |","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":"| `* *` | new user | interactive guide with sample data | quickly understand app\u0027s capabilities |","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":"| `* *` | Doctor who is colaborating with other doctor | ability to leave comments or annotations on shared patient records | communicate specific insights or recommendations to my colleague |","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | see the previous doage that the patient take in his medical record page | Adjust the dosage for the patient according to his/her state of illness |","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | search about the patient\u0027s allergy history | Prescribing safe medication for patients |","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | know about the previous illnesses of the patient | help to diagnose causes more accurately |","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | be able to update the patient\u0027s condition upon the previous appointment | better track the sate of illness of the patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | suggestion on correction for mistyped commands | avoid typing wrong comands |","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a way to assign specific colors to specific tags | better differentiate the existing tags |","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a icon or button beside a feature that shows a tooltip when hovered | quickly find out information about the feature without needing other references |","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a method of giving feedback to the developers | share aspects of the product that I would like changes to |","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | have the ability to switch to a more simplified and beginner friendly UI | more effectively learn the basics |","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"| `*` | trainee doctor | be able to refer to similar previous cases | study treatment that helps with this kind of cases |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"| `*` | experienced user | an efficient way to export and backup patient data | ensure the safety and accessibility of important information |","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | export selected patient\u0027s information | give the patient their personal information after they change their doctors, and delete the patient\u0027s information from the database safely |","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | export selected medical instructions | The patient can follow my medical instructions closely |","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | see the list of patients based on the next follow-up meeting/calling time | have a better plan for my time and know which patient needs my attention next |","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":"(For all use cases below, the **System** is the `VitalConnect` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"**Use case: UC1 - Add a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":"1. User requests to add a patient by keying the patient\u0027s name and NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect adds the patient\u0027s name and NRIC.","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":"* 1a. The NRIC already exists in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays warning message and the existing patient\u0027s information.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":"* 1b. The NRIC or name entered is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":"**Use case: UC2 - Delete a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete a patient by keying the patient\u0027s name or NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect deletes the patient from database.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":"**Use case: UC3 - Add an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"1. User requests to add an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect add the appointment to the database under this patient\u0027s NRIC.","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":"* 1a. Critical information (time and doctor) missing in the appointment.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":"* 1b. The assigned patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"Ella-e"},"content":"* 1c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"Ella-e"},"content":" * 1c1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"Ella-e"},"content":" * 1c1. VitalConnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"Ella-e"},"content":"**Use case: UC4 - Delete an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect removes the appointment from the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"Ella-e"},"content":"* 1a. The assigned patient or the appointment doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"Ella-e"},"content":"**Use case: UC5 - Modify an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify an appointment for a patient by keying the appointment\u0027s id.","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect displays the detail of the appointment to be modified.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ella-e"},"content":"3. User specify which field to be modified and enters the new information.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"Ella-e"},"content":"4. VitalConnect saves the new appointment information.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"Ella-e"},"content":"5. VitalConnect displays the updated detail of the appointment modified.","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"Ella-e"},"content":"* 1a. The appointment refered by the id doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"Ella-e"},"content":"* 1b. The id is not a valid number.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"Ella-e"},"content":"* 3a. The field to be modified is unrecognized.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"Ella-e"},"content":" * 3a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"Ella-e"},"content":" * 3a2. VitalConnect request for valid field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"Ella-e"},"content":" * 3a3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"Ella-e"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ella-e"},"content":"* 3b. The new information is in invalid form or contains invalid character.","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"Ella-e"},"content":" * 3b1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"Ella-e"},"content":" * 3b2. VitalConnect request for valid data entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"Ella-e"},"content":" * 3b3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"Ella-e"},"content":" Steps 3b1-3b3 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"Ella-e"},"content":"* 3c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"Ella-e"},"content":" * 3c1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"Ella-e"},"content":" * 3c2. VitalConnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"Ella-e"},"content":" * 3c3. VitalConnect request for valid data entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"Ella-e"},"content":" * 3c4. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"Ella-e"},"content":" Steps 3c1-3c4 are repeated until the time doesn\u0027t crash.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"Ella-e"},"content":"**Use case: UC6 - Add contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"Ella-e"},"content":"1. User requests to add contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect save the contact information to the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"Ella-e"},"content":"* 1b. The contact information is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"Ella-e"},"content":"**Use case: UC7 - Delete contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect remove the contact information to the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient or contact information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"Ella-e"},"content":"**Use case: UC8 - Modify contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect displays the updated contact information of the patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient or contact information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"Ella-e"},"content":"* 1b. The contact information is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"Ella-e"},"content":"# Technical Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"Ella-e"},"content":"# Performance Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"Ella-e"},"content":"1. Should be able to hold up to 100 patients with 1000 appointments without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"Ella-e"},"content":"2. The system should respond within 3 seconds.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"Ella-e"},"content":"# Quality Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"Ella-e"},"content":"1. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"Ella-e"},"content":"2. System should be robust for any form of data file crashes and invalid user input.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"Ella-e"},"content":"# Scope","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"Ella-e"},"content":"1. The product will \u003cstrong\u003eNOT\u003c/strong\u003e enforce any form of protection of the generated data file containing patients\u0027 information. The organization should be responsible for ensuring the safety of their patient\u0027s data.","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"Ella-e"},"content":"# Process Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"Ella-e"},"content":"1. The project is expected to grow in breadth-first iterative process.","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":462,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ella-e":157,"-":358}},{"path":"docs/team/mayuehan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"layout: page","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"title: Ma Yuehan\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: VitalConnect","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"### **New Feature**: ","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"* Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"* Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"3. __List appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"### **Documentation**:","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"User Guide:","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":42}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# VitalConnect","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-2/tp/actions)","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"This product is for clinic assistants that have to keep track of a lot of patient information and requires ","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"the information at a fast pace, thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"__Value proposition:__","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"Clinic assistants are required to take note of a multitude of information regarding the patient, ","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"such as their contact number, any existing medical condition, the specific treatment that they are currently undergoing and much more. ","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"With this product, such information will be readily available while also allowing for quality of life features such as scheduling ","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"appointments and managing medication.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"## Features (V1.2)","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"__Saving the data__","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"* All data is saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"__Clear all existing entries__","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Clear all the existing entries within the local database.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"__Exit the program__","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"* Exits the program. Any data that is not saved cannot be restored upon exiting.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"__Viewing help__","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"* Shows a message explaining the instructions to access the user guide.","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"### Manage Appointments","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"__Create Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"* Create an appointment of a patient, information such as time and name of patient are required when adding.","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"__Delete Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"* Delete an appointment of a patient.","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"__List Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"* List all the appointments that have been created, provide information such as the patient’s name and time of the appointments.","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"### Manage Contact Information","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"__Add patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"* Add contact information, including phone number and email address. If a specific field already exists, the command would fail.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"__Delete patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all contact information, including phone number and email address.","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"__List patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"* List all patient’s contact information.","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"### Manage Patients","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"__Add patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"* Add a new patient to the database so further information about their appointment or contact information can be added.","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"__Delete patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all patients, including their contact and appointment.","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":83,"-":13}},{"path":"bin/main/view/CommandBox.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/DarkTheme.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":".background {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".label {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":".label-bright {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":".label-header {","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":".text-field {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":".tab-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":".table-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":".split-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":".list-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":".list-cell {","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":".list-cell .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":".cell_big_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":".cell_small_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":".stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":".pane-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":".status-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":".result-display {","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":".result-display .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":".status-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":".grid-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":".context-menu {","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":".context-menu .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":".menu-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":".menu .left-container {","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"/*","lastModifiedDate":"2024-03-04"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-04"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-04"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-04"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":".button {","lastModifiedDate":"2024-03-04"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-04"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-04"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-04"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":".button:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-04"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-04"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":234,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":235,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":236,"author":{"gitId":"Ella-e"},"content":".button:focused {","lastModifiedDate":"2024-03-04"},{"lineNumber":237,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-04"},{"lineNumber":238,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":239,"author":{"gitId":"Ella-e"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":240,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":241,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":242,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":243,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":244,"author":{"gitId":"Ella-e"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-04"},{"lineNumber":245,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-04"},{"lineNumber":246,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":247,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":248,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":249,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":250,"author":{"gitId":"Ella-e"},"content":".button:default {","lastModifiedDate":"2024-03-04"},{"lineNumber":251,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":252,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-04"},{"lineNumber":253,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":254,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":255,"author":{"gitId":"Ella-e"},"content":".button:default:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":256,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":257,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":258,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":259,"author":{"gitId":"Ella-e"},"content":".dialog-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":260,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":261,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":262,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-04"},{"lineNumber":264,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2024-03-04"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-04"},{"lineNumber":270,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":271,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":273,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-04"},{"lineNumber":274,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-04"},{"lineNumber":278,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-04"},{"lineNumber":279,"author":{"gitId":"Ella-e"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-04"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":".scroll-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"#cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"Ella-e"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-04"},{"lineNumber":316,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"Ella-e"},"content":"#commandTextField {","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ella-e"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":"#tags {","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ella-e"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"#tags .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":352}},{"path":"bin/main/view/Extensions.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":".error {","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".list-cell:empty {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-background: #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":".tag-selector {","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":".tooltip-text {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":20}},{"path":"bin/main/view/HelpWindow.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"#copyButton {","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"#copyButton:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: gray;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"#copyButton:armed {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"#helpMessageContainer {","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":19}},{"path":"bin/main/view/HelpWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":44}},{"path":"bin/main/view/MainWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":60}},{"path":"bin/main/view/PersonListCard.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":36}},{"path":"bin/main/view/PersonListPanel.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":8}},{"path":"bin/main/view/ResultDisplay.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/StatusBarFooter.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":12}},{"path":"bin/test/view/UiPartTest/invalidFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"Not a valid FXML file","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":1}},{"path":"bin/test/view/UiPartTest/validFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import seedu.address.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":4}},{"path":"bin/test/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"seedu.address.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"### John Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"### Ma Yuehan","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"[[github](https://github.com/MaYuehan)]","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"[[portfolio](team/mayuehan.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"* Responsibilities: ","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"### Mu Zhaoyu","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"\u003cimg src\u003d\"images/ella-e.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"[[github](http://github.com/Ella-e)] ","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"[[portfolio](team/ella-e.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Responsibilities: Command implementation, documentation","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"MaYuehan":5,"Ella-e":5,"-":50}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (good to but might not have) - `*`","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":"| `* * *` | new user | have a comprehensive document that details every possible feature. | learn how to use a particular feature |","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | add new patient, either with or without further information about the patient | |","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | delete patient | free storage resources |","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | be able to add the contact information of my patient into the database | I can get in touch with them when needed or under emergency situation |","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | be able to delete the contact information for a particular patient when the information is outdated | I can keep in touch with my patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | list all patients and their contacts | |","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | add appointment to free time slot | easily schedule an appointment and find free time slot for it |","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | delete appointment to free time slot | remove reservation if the patient is unable to attend |","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":"| `* * *` | intermediate user | list appointments | I can see all the appointments. |","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | add medication instructions for the patient | have a better understanding of the medication history of my patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | list all information about specific patient | see the detail information of the patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | be able to modify/update the information of a particular patient | I can keep the most-updated information |","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | be able to modify an appointment details of a patient | I can keep the most-updated appointment information |","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":"| `* *` | new user | option for undo most precent change | I can quickly fix my mistyped command |","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":"| `* *` | beginner | set the reminder for an appointment | remind me when Im busy with work |","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | mark a reminder as done | better track the undo work |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"| `* *` | user | mark some of the patients as the special focus | better track the state of illness of patients who are in a very serious state |","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"| `* *` | expert user | have short forms of existing commands | save time on typing the commands |","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":"| `* *` | new user | interactive guide with sample data | quickly understand app\u0027s capabilities |","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":"| `* *` | Doctor who is colaborating with other doctor | ability to leave comments or annotations on shared patient records | communicate specific insights or recommendations to my colleague |","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | see the previous doage that the patient take in his medical record page | Adjust the dosage for the patient according to his/her state of illness |","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | search about the patient\u0027s allergy history | Prescribing safe medication for patients |","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | know about the previous illnesses of the patient | help to diagnose causes more accurately |","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":"| `* *` | intermediate user | be able to update the patient\u0027s condition upon the previous appointment | better track the sate of illness of the patient |","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | suggestion on correction for mistyped commands | avoid typing wrong comands |","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a way to assign specific colors to specific tags | better differentiate the existing tags |","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a icon or button beside a feature that shows a tooltip when hovered | quickly find out information about the feature without needing other references |","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":"| `*` | user | have a method of giving feedback to the developers | share aspects of the product that I would like changes to |","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | have the ability to switch to a more simplified and beginner friendly UI | more effectively learn the basics |","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"| `*` | trainee doctor | be able to refer to similar previous cases | study treatment that helps with this kind of cases |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"| `*` | experienced user | an efficient way to export and backup patient data | ensure the safety and accessibility of important information |","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | export selected patient\u0027s information | give the patient their personal information after they change their doctors, and delete the patient\u0027s information from the database safely |","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | export selected medical instructions | The patient can follow my medical instructions closely |","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"| `*` | intermediate user | see the list of patients based on the next follow-up meeting/calling time | have a better plan for my time and know which patient needs my attention next |","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":"(For all use cases below, the **System** is the `VitalConnect` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"**Use case: UC1 - Add a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":"1. User requests to add a patient by keying the patient\u0027s name and NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect adds the patient\u0027s name and NRIC.","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":"* 1a. The NRIC already exists in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays warning message and the existing patient\u0027s information.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":"* 1b. The NRIC or name entered is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":"**Use case: UC2 - Delete a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete a patient by keying the patient\u0027s name or NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect deletes the patient from database.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":"**Use case: UC3 - Add an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"1. User requests to add an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect add the appointment to the database under this patient\u0027s NRIC.","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":"* 1a. Critical information (time and doctor) missing in the appointment.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":"* 1b. The assigned patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"Ella-e"},"content":"* 1c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"Ella-e"},"content":" * 1c1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"Ella-e"},"content":" * 1c1. VitalConnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"Ella-e"},"content":"**Use case: UC4 - Delete an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect removes the appointment from the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"Ella-e"},"content":"* 1a. The assigned patient or the appointment doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"Ella-e"},"content":"**Use case: UC5 - Modify an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify an appointment for a patient by keying the appointment\u0027s id.","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect displays the detail of the appointment to be modified.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ella-e"},"content":"3. User specify which field to be modified and enters the new information.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"Ella-e"},"content":"4. VitalConnect saves the new appointment information.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"Ella-e"},"content":"5. VitalConnect displays the updated detail of the appointment modified.","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"Ella-e"},"content":"* 1a. The appointment refered by the id doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"Ella-e"},"content":"* 1b. The id is not a valid number.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"Ella-e"},"content":"* 3a. The field to be modified is unrecognized.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"Ella-e"},"content":" * 3a1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"Ella-e"},"content":" * 3a2. VitalConnect request for valid field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"Ella-e"},"content":" * 3a3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"Ella-e"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ella-e"},"content":"* 3b. The new information is in invalid form or contains invalid character.","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"Ella-e"},"content":" * 3b1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"Ella-e"},"content":" * 3b2. VitalConnect request for valid data entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"Ella-e"},"content":" * 3b3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"Ella-e"},"content":" Steps 3b1-3b3 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"Ella-e"},"content":"* 3c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"Ella-e"},"content":" * 3c1. VitalConnect displays an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"Ella-e"},"content":" * 3c2. VitalConnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"Ella-e"},"content":" * 3c3. VitalConnect request for valid data entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"Ella-e"},"content":" * 3c4. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"Ella-e"},"content":" Steps 3c1-3c4 are repeated until the time doesn\u0027t crash.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"Ella-e"},"content":"**Use case: UC6 - Add contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"Ella-e"},"content":"1. User requests to add contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect save the contact information to the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"Ella-e"},"content":"* 1b. The contact information is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"Ella-e"},"content":"**Use case: UC7 - Delete contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect remove the contact information to the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient or contact information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"Ella-e"},"content":"**Use case: UC8 - Modify contact information**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify contact information for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"Ella-e"},"content":"2. VitalConnect displays the updated contact information of the patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient or contact information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"Ella-e"},"content":" * 1a1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"Ella-e"},"content":"* 1b. The contact information is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"Ella-e"},"content":" * 1b1. VitalConnect displays a warning message.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"Ella-e"},"content":"# Technical Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"Ella-e"},"content":"# Performance Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"Ella-e"},"content":"1. Should be able to hold up to 100 patients with 1000 appointments without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"Ella-e"},"content":"2. The system should respond within 3 seconds.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"Ella-e"},"content":"# Quality Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"Ella-e"},"content":"1. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"Ella-e"},"content":"2. System should be robust for any form of data file crashes and invalid user input.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"Ella-e"},"content":"# Scope","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"Ella-e"},"content":"1. The product will \u003cstrong\u003eNOT\u003c/strong\u003e enforce any form of protection of the generated data file containing patients\u0027 information. The organization should be responsible for ensuring the safety of their patient\u0027s data.","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"Ella-e"},"content":"# Process Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"Ella-e"},"content":"1. The project is expected to grow in breadth-first iterative process.","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":462,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ella-e":157,"-":358}},{"path":"docs/team/ella-e.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"layout: page","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"title: Mu Zhaoyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"## Project: VitalConnect","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"### **New Feature**: ","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"* Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"* Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"3. __List appointments__","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"### **Documentation**:","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"User Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":42}},{"path":"docs/team/mayuehan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"layout: page","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"title: Ma Yuehan\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: VitalConnect","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"### **New Feature**: ","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"* Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"* Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"3. __List appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"### **Documentation**:","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"User Guide:","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":42}}] diff --git a/AY2324S2-CS2103T-W08-2_tp_master/commits.json b/AY2324S2-CS2103T-W08-2_tp_master/commits.json index b1796eb7..095c8207 100644 --- a/AY2324S2-CS2103T-W08-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W08-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"javierng2knus":[],"MaYuehan":[{"date":"2024-02-25","commitResults":[{"hash":"c65d82151bc280716b9fe72527033275eaa16b67","isMergeCommit":false,"messageTitle":"Update Readme and AboutUs Modify the Readme file, add more details about the project and the features we plan to achieve for v1.2. Also modify the AboutUs file, add the information of mine. Create my profile file and link to AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":6}}}]}],"Ella-e":[{"date":"2024-03-04","commitResults":[{"hash":"88928392b502c29986859c42ae863abd6c573eb0","isMergeCommit":false,"messageTitle":"Update NFRs to the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":580,"deletions":0},"docs":{"insertions":15,"deletions":4}}},{"hash":"9f1b36aa95883a953e163177c02b608df0fc9741","isMergeCommit":true,"messageTitle":"Merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80330bd7de96af545b73b260d978a38b4266f6a6","isMergeCommit":false,"messageTitle":"Update User Story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":9}}},{"hash":"8c20a6b890d2562d007f15710a1ea3c12180f395","isMergeCommit":false,"messageTitle":"Update Use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":20}}},{"hash":"ea0a4cfa9b5323ceedb52cbba54a5d32884e0cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027developer-guide\u0027","messageBody":"Update the User Story and Use case section of the Developer Guide.\n","fileTypesAndContributionMap":{}},{"hash":"c63f5bed507ded44d8db7c5c1629e76f3abdfe27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update the local fork version.\n","fileTypesAndContributionMap":{}}]}],"SeaHogs":[{"date":"2024-03-04","commitResults":[{"hash":"149a1660765b9560dd0c1fb9eac105199da52033","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Ella-e/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"javierng2knus":{"docs":0,"functional-code":0,"test-code":0},"MaYuehan":{"docs":130,"functional-code":0,"test-code":0},"Ella-e":{"docs":157,"functional-code":0,"test-code":0,"other":580},"SeaHogs":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"javierng2knus":0.0,"MaYuehan":1528.5952,"Ella-e":50152.15,"SeaHogs":0.0},"authorDisplayNameMap":{"javierng2knus":"CS2103T-W08-2 NG W..VIER","MaYuehan":"CS2103T-W08-2 MA Y..EHAN","Ella-e":"CS2103T-W08-2 MU Z..AOYU","SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} +{"authorDailyContributionsMap":{"javierng2knus":[],"MaYuehan":[{"date":"2024-02-25","commitResults":[{"hash":"c65d82151bc280716b9fe72527033275eaa16b67","isMergeCommit":false,"messageTitle":"Update Readme and AboutUs Modify the Readme file, add more details about the project and the features we plan to achieve for v1.2. Also modify the AboutUs file, add the information of mine. Create my profile file and link to AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":6}}}]}],"Ella-e":[{"date":"2024-03-04","commitResults":[{"hash":"88928392b502c29986859c42ae863abd6c573eb0","isMergeCommit":false,"messageTitle":"Update NFRs to the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":580,"deletions":0},"docs":{"insertions":15,"deletions":4}}},{"hash":"9f1b36aa95883a953e163177c02b608df0fc9741","isMergeCommit":true,"messageTitle":"Merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80330bd7de96af545b73b260d978a38b4266f6a6","isMergeCommit":false,"messageTitle":"Update User Story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":9}}},{"hash":"8c20a6b890d2562d007f15710a1ea3c12180f395","isMergeCommit":false,"messageTitle":"Update Use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":20}}},{"hash":"ea0a4cfa9b5323ceedb52cbba54a5d32884e0cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027developer-guide\u0027","messageBody":"Update the User Story and Use case section of the Developer Guide.\n","fileTypesAndContributionMap":{}},{"hash":"c63f5bed507ded44d8db7c5c1629e76f3abdfe27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update the local fork version.\n","fileTypesAndContributionMap":{}},{"hash":"0eeaf9201a4b1469e3efbcb845059af5d4367e48","isMergeCommit":false,"messageTitle":"Update information into AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":4}}},{"hash":"9fbb4d4dc65acefe4ee86a183dd670e9ff309840","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update\n","fileTypesAndContributionMap":{}},{"hash":"44996ce5a2e991f37a33d3531a15411b9f8e9f0e","isMergeCommit":false,"messageTitle":"Update personal portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"SeaHogs":[{"date":"2024-03-04","commitResults":[{"hash":"149a1660765b9560dd0c1fb9eac105199da52033","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Ella-e/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"730cbb618f6a85fb57b37f018abc6ed847b48b8a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Ella-e/master","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"javierng2knus":{"docs":0,"functional-code":0,"test-code":0},"MaYuehan":{"docs":130,"functional-code":0,"test-code":0},"Ella-e":{"docs":204,"functional-code":0,"test-code":0,"other":580},"SeaHogs":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"javierng2knus":0.0,"MaYuehan":1528.5952,"Ella-e":57208.598,"SeaHogs":0.0},"authorDisplayNameMap":{"javierng2knus":"CS2103T-W08-2 NG W..VIER","MaYuehan":"CS2103T-W08-2 MA Y..EHAN","Ella-e":"CS2103T-W08-2 MU Z..AOYU","SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} diff --git a/AY2324S2-CS2103T-W10-3_tp_master/authorship.json b/AY2324S2-CS2103T-W10-3_tp_master/authorship.json index 45355c70..e14d2afd 100644 --- a/AY2324S2-CS2103T-W10-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-3/tp/actions)","lastModifiedDate":"2024-02-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp/graph/badge.svg?token\u003dPXSE5NPSA4)](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"wallacexuhanxiao":2,"-":15}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"### John Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"### Jeremy Wang","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"\u003cimg src\u003d\"images/j-wang-csma.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"[[github](http://github.com/J-wang-CSMA)]","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"[[portfolio](team/j-wang-csma.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* Role: Developer, Deliverables and deadlines","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"* Responsibilities: Data + UI","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"### XU HANXIAO","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"\u003cimg src\u003d\"images/xuhanxiao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"[[github](https://github.com/wallacexuhanxiao] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"ongzhili"},"content":"### Ong Zhi Li","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ongzhili"},"content":"\u003cimg src\u003d\"images/ongzhili.PNG\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ongzhili"},"content":"[[github](http://github.com/ongzhili)]","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"ongzhili"},"content":"[[portfolio](team/ongzhili.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"ongzhili"},"content":"* Responsibilities: UI + Logic handling","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wallacexuhanxiao":4,"ongzhili":5,"-":35,"J-wang-CSMA":6}},{"path":"docs/team/j-wang-csma.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"title: Jeremy Wang\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"### Project: PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"PedagoguePages is a desktop address book application for teachers to manage their students\u0027 contact information.","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"* **New Features**: ","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" * Managed releases: ","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"J-wang-CSMA":37}},{"path":"docs/team/ongzhili.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":"### Project: PedagogyPages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"PedagogyPages is a desktop address book","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"application used for teachers to manage their students\u0027 contact information. ","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. ","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":" * Updated AboutUs with own information","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":" * Added portfolio file (this file)","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"ongzhili":20}},{"path":"docs/team/xuhanxiao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"# Hanxiao\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"wallacexuhanxiao":1}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-3/tp/actions)","lastModifiedDate":"2024-02-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp/graph/badge.svg?token\u003dPXSE5NPSA4)](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* This is **a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info.","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"wallacexuhanxiao":2,"-":15}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"### John Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"### Jeremy Wang","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"\u003cimg src\u003d\"images/j-wang-csma.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"[[github](http://github.com/J-wang-CSMA)]","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"[[portfolio](team/j-wang-csma.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* Role: Developer, Deliverables and deadlines","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"* Responsibilities: Data + UI","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"### XU HANXIAO","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"\u003cimg src\u003d\"images/xuhanxiao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"[[github](https://github.com/wallacexuhanxiao] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"ongzhili"},"content":"### Ong Zhi Li","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ongzhili"},"content":"\u003cimg src\u003d\"images/ongzhili.PNG\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ongzhili"},"content":"[[github](http://github.com/ongzhili)]","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"ongzhili"},"content":"[[portfolio](team/ongzhili.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"ongzhili"},"content":"* Responsibilities: UI + Logic handling","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wallacexuhanxiao":4,"ongzhili":5,"-":35,"J-wang-CSMA":6}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"wallacexuhanxiao"},"content":"* is an educator working with the education of primary / secondary students ","lastModifiedDate":"2024-02-28"},{"lineNumber":265,"author":{"gitId":"wallacexuhanxiao"},"content":"* require fast and organized access to students\u0027 and parents\u0027 contact detail ","lastModifiedDate":"2024-02-28"},{"lineNumber":266,"author":{"gitId":"wallacexuhanxiao"},"content":"* have many students\u0027 information to manage ","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"wallacexuhanxiao"},"content":"**Value proposition**: Provide fast and organized access to students’ and parents’ contact details for the educator across multiple classes with large class sizes.","lastModifiedDate":"2024-02-28"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | view student and his/her parents’ contact records fully | contact them when needed. |","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"wallacexuhanxiao"},"content":"|`* * *` | teacher | easily update students’ contact records via their ID |track students’ latest contact information|","lastModifiedDate":"2024-02-28"},{"lineNumber":284,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | delete student contact records | remove unnecessary data when a student graduates / drops out |","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | easily identify duplicate entries | make sure there is no repetition of student records|","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | tag my students | find them easily|","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | administrator | delete all student info in one go| delete the whole class in one command after each semester|","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | expert teacher user | search for students by tags | view each class/CCA/tutoring group I am in charge of at a glance |","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by name | find specific student\u0027s information by their name |","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by id | find specific students by their unique student id |","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | busy teacher (teaching multiple subjects at once) | obtain class lists per class easily||","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | view my class roster at a glance| |","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careful teacher | back up my students’ information| avoid losing any student\u0027s information|","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | school staff member |export contact lists for emergency purposes| ensure student safety in case of emergencies |","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careless (but fast typing) teacher | run the command with some minor typo | use the application with greater ease|","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *`| forgetful teacher | add notes or additional information to each student | remember important details about them |","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | careless teacher | undo my previous command | avoid making mistake like delete the wrong student | ","lastModifiedDate":"2024-02-28"},{"lineNumber":298,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | mark students’ attendance for each class session| |","lastModifiedDate":"2024-02-28"},{"lineNumber":299,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | set reminders for events such as parent-teacher/student-teacher meetings| I don\u0027t miss any important appointments|","lastModifiedDate":"2024-02-28"},{"lineNumber":300,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | teacher | utilize the application to understand the geographic distribution of my students | planning school trips or outreach programs |","lastModifiedDate":"2024-02-28"},{"lineNumber":301,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"wallacexuhanxiao"},"content":"(For all use cases below, the **System** is the `PedagoguePages` and the **Actor** is the `teacher`, unless specified otherwise)","lastModifiedDate":"2024-02-28"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the usage help list**","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view the user guide of PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":313,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows the user guide to teacher","lastModifiedDate":"2024-02-28"},{"lineNumber":314,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the student list**","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":322,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view all the info in PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":323,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of students\u0027 info","lastModifiedDate":"2024-02-28"},{"lineNumber":324,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":325,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Delete a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":334,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to delete a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":335,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages deletes the person","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":341,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":345,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":347,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":351,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Add a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":352,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":353,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":354,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":355,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher enter the student info","lastModifiedDate":"2024-02-28"},{"lineNumber":356,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a success message and add the student\u0027s info","lastModifiedDate":"2024-02-28"},{"lineNumber":357,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":358,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":359,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":360,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":361,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":362,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. Teacher enter a invalid command.","lastModifiedDate":"2024-02-28"},{"lineNumber":363,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message and give a hint.","lastModifiedDate":"2024-02-28"},{"lineNumber":364,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":365,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":366,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":367,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":368,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Update the info of a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":369,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":370,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":371,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":372,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":373,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":374,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to update the info of a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":375,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages update the info for the student","lastModifiedDate":"2024-02-28"},{"lineNumber":376,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":386,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":387,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":390,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":391,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3b. The updated field is in a wrong format","lastModifiedDate":"2024-02-28"},{"lineNumber":392,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3b1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a group of a students by tag**","lastModifiedDate":"2024-02-28"},{"lineNumber":397,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":398,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":399,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":400,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a group of students by specific tag","lastModifiedDate":"2024-02-28"},{"lineNumber":401,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":402,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":403,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":404,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":405,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The tag is invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a specific student by name**","lastModifiedDate":"2024-02-28"},{"lineNumber":413,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":414,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":415,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":416,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by student\u0027s name","lastModifiedDate":"2024-02-28"},{"lineNumber":417,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":418,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher select the student from the list","lastModifiedDate":"2024-02-28"},{"lineNumber":419,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":420,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":421,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":422,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":423,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":424,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":425,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":426,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":439,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"wallacexuhanxiao":112,"-":380}},{"path":"docs/team/j-wang-csma.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"title: Jeremy Wang\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"### Project: PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"PedagoguePages is a desktop address book application for teachers to manage their students\u0027 contact information.","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"* **New Features**: ","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" * Managed releases: ","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"J-wang-CSMA":37}},{"path":"docs/team/ongzhili.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":"### Project: PedagogyPages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"PedagogyPages is a desktop address book","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"application used for teachers to manage their students\u0027 contact information. ","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. ","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":" * Updated AboutUs with own information","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":" * Added portfolio file (this file)","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"ongzhili":20}},{"path":"docs/team/xuhanxiao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"# Hanxiao\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"wallacexuhanxiao":1}}] diff --git a/AY2324S2-CS2103T-W10-3_tp_master/commits.json b/AY2324S2-CS2103T-W10-3_tp_master/commits.json index 5a218807..b5be5838 100644 --- a/AY2324S2-CS2103T-W10-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"IamZhenHong":[],"ongzhili":[{"date":"2024-02-28","commitResults":[{"hash":"9385799409105c26b28c56cef388d382521797e8","isMergeCommit":false,"messageTitle":"Update AboutUs and add portfolio document","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":14}}},{"hash":"0d4d8dde6bc98ef5b9f7aa17b474ce30744715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-aboutus\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cdca2a8236930177923a58a23db170bcbc34658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b92aa4cf1a7fa10d192874fa2ac256960bd5de86","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ongzhili/master","messageBody":"Update Zhi Li\u0027s information and add porfolio document","fileTypesAndContributionMap":{}}]}],"wallacexuhanxiao":[{"date":"2024-02-24","commitResults":[{"hash":"c9f7c4d577bee6bc5230f9e5123d6cf4a1c9ba1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"919ecb18046289168a7eaf90c02cc309261b679e","isMergeCommit":false,"messageTitle":"Update about us for Hanxiao","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"4e09887f7596159395ec7d397e1df70dd84dc7ab","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b4a351ff43dd7d1c15719dbd263a1dff03179eae","isMergeCommit":true,"messageTitle":"Merge pull request #10 from wallacexuhanxiao/Update-Hanxiao_AboutUs","messageBody":"Update about us for Hanxiao","fileTypesAndContributionMap":{}}]}],"J-wang-CSMA":[{"date":"2024-02-28","commitResults":[{"hash":"6904df26d33ff50f462fe6761cea38f33bced0ee","isMergeCommit":false,"messageTitle":"Edit AboutUs page and add relevant documents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":6}}},{"hash":"23c5fc971ff7b838b6ec07055f5931ea1b285465","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"e045d19f119c818d5d636c633b1d4e17b1ea998e","isMergeCommit":true,"messageTitle":"Merge pull request #8 from J-wang-CSMA/branch-AboutUsJeremy","messageBody":"Edit AboutUs page and add relevant documents for J-Wang-CSMA","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"IamZhenHong":{"docs":0,"functional-code":0,"test-code":0},"ongzhili":{"docs":25,"functional-code":0,"test-code":0},"wallacexuhanxiao":{"docs":7,"functional-code":0,"test-code":0},"J-wang-CSMA":{"docs":43,"functional-code":0,"test-code":0}},"authorContributionVariance":{"IamZhenHong":0.0,"ongzhili":211.25,"wallacexuhanxiao":16.138887,"J-wang-CSMA":661.25},"authorDisplayNameMap":{"IamZhenHong":"CS2103T-W10-3 SENG..HONG","ongzhili":"CS2103T-W10-3 ONG ..I LI","wallacexuhanxiao":"CS2103T-W10-3 XU H..XIAO","J-wang-CSMA":"CS2103T-W10-3 WANG..REMY"}} +{"authorDailyContributionsMap":{"IamZhenHong":[],"ongzhili":[{"date":"2024-02-28","commitResults":[{"hash":"9385799409105c26b28c56cef388d382521797e8","isMergeCommit":false,"messageTitle":"Update AboutUs and add portfolio document","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":14}}},{"hash":"0d4d8dde6bc98ef5b9f7aa17b474ce30744715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-aboutus\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cdca2a8236930177923a58a23db170bcbc34658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b92aa4cf1a7fa10d192874fa2ac256960bd5de86","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ongzhili/master","messageBody":"Update Zhi Li\u0027s information and add porfolio document","fileTypesAndContributionMap":{}}]}],"wallacexuhanxiao":[{"date":"2024-02-24","commitResults":[{"hash":"c9f7c4d577bee6bc5230f9e5123d6cf4a1c9ba1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"919ecb18046289168a7eaf90c02cc309261b679e","isMergeCommit":false,"messageTitle":"Update about us for Hanxiao","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"4e09887f7596159395ec7d397e1df70dd84dc7ab","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14a7036a7cfd60bd09d7909e394ceeb83a4715f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027Update-Hanxiao_AboutUs\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b4a351ff43dd7d1c15719dbd263a1dff03179eae","isMergeCommit":true,"messageTitle":"Merge pull request #10 from wallacexuhanxiao/Update-Hanxiao_AboutUs","messageBody":"Update about us for Hanxiao","fileTypesAndContributionMap":{}},{"hash":"7296ae707a6d00ea992fc5fb17bb707e4fa7cfcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed843ebaa8031e8fddb0f5b79e4dedd96ddb905c","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":10}}},{"hash":"a62de54094445ca0bb6fd6bbb1ab57878a3c8e6f","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":9}}}]},{"date":"2024-03-04","commitResults":[{"hash":"26e9cbe6fde203eb0cadfa7e2c9bc010d337a048","isMergeCommit":false,"messageTitle":"Add extension on one of use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}},{"hash":"210877125a8899c968f0feefa46e45ec780c1034","isMergeCommit":true,"messageTitle":"Merge pull request","messageBody":"Update user story and use case","fileTypesAndContributionMap":{}}]}],"J-wang-CSMA":[{"date":"2024-02-28","commitResults":[{"hash":"6904df26d33ff50f462fe6761cea38f33bced0ee","isMergeCommit":false,"messageTitle":"Edit AboutUs page and add relevant documents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":6}}},{"hash":"23c5fc971ff7b838b6ec07055f5931ea1b285465","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"e045d19f119c818d5d636c633b1d4e17b1ea998e","isMergeCommit":true,"messageTitle":"Merge pull request #8 from J-wang-CSMA/branch-AboutUsJeremy","messageBody":"Edit AboutUs page and add relevant documents for J-Wang-CSMA","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"IamZhenHong":{"docs":0,"functional-code":0,"test-code":0},"ongzhili":{"docs":25,"functional-code":0,"test-code":0},"wallacexuhanxiao":{"docs":119,"functional-code":0,"test-code":0},"J-wang-CSMA":{"docs":43,"functional-code":0,"test-code":0}},"authorContributionVariance":{"IamZhenHong":0.0,"ongzhili":125.702446,"wallacexuhanxiao":1888.5125,"J-wang-CSMA":393.4711},"authorDisplayNameMap":{"IamZhenHong":"CS2103T-W10-3 SENG..HONG","ongzhili":"CS2103T-W10-3 ONG ..I LI","wallacexuhanxiao":"CS2103T-W10-3 XU H..XIAO","J-wang-CSMA":"CS2103T-W10-3 WANG..REMY"}} diff --git a/AY2324S2-CS2103T-W10-4_tp_master/authorship.json b/AY2324S2-CS2103T-W10-4_tp_master/authorship.json index fe51488c..437de334 100644 --- a/AY2324S2-CS2103T-W10-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-4_tp_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"### John Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"### Jane Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"### Toh Li Heng","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":"\u003cimg src\u003d\"images/tohlh.jpg\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"[[homepage](http://tohlh.github.io)]","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":"[[github](http://github.com/tohlh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":"[[portfolio](team/tohlh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"* Responsibilities: Dev Ops + Development","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"-":56,"tohlh":6}},{"path":"docs/team/tohlh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" layout: default.md","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" title: \"Li Heng\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"tohlh":11}}] diff --git a/AY2324S2-CS2103T-W10-4_tp_master/commits.json b/AY2324S2-CS2103T-W10-4_tp_master/commits.json index 409b36c9..37d1bb60 100644 --- a/AY2324S2-CS2103T-W10-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"doyelee0313":[],"STELLA-LYE":[],"jocelyn-soh":[],"tohlh":[{"date":"2024-03-04","commitResults":[{"hash":"558a8e598a3c6d1e65235ce3657ed47ef99709d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"docs":0,"functional-code":0,"test-code":0},"STELLA-LYE":{"docs":0,"functional-code":0,"test-code":0},"jocelyn-soh":{"docs":0,"functional-code":0,"test-code":0},"tohlh":{"docs":0,"functional-code":0,"test-code":0}},"authorContributionVariance":{"doyelee0313":0.0,"STELLA-LYE":0.0,"jocelyn-soh":0.0,"tohlh":0.0},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE","STELLA-LYE":"CS2103T-W10-4 STEL..I YU","jocelyn-soh":"CS2103T-W10-4 SOH ..ELYN","tohlh":"CS2103T-W10-4 TOH ..HENG"}} +{"authorDailyContributionsMap":{"doyelee0313":[],"STELLA-LYE":[{"date":"2024-03-04","commitResults":[{"hash":"09ba9eb1ce42d538c3a5ccc09292c0b27252ceb3","isMergeCommit":true,"messageTitle":"Merge pull request #6 from tohlh/update-about-me","messageBody":"Add tohlh\u0027s personal info","fileTypesAndContributionMap":{}}]}],"jocelyn-soh":[],"tohlh":[{"date":"2024-03-04","commitResults":[{"hash":"558a8e598a3c6d1e65235ce3657ed47ef99709d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"b225ac386ca9d8d71bdfb4561bc458d960f69a45","isMergeCommit":false,"messageTitle":"Add tohlh\u0027s personal info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"docs":0,"functional-code":0,"test-code":0},"STELLA-LYE":{"docs":0,"functional-code":0,"test-code":0},"jocelyn-soh":{"docs":0,"functional-code":0,"test-code":0},"tohlh":{"docs":17,"functional-code":0,"test-code":0}},"authorContributionVariance":{"doyelee0313":0.0,"STELLA-LYE":0.0,"jocelyn-soh":0.0,"tohlh":40.0},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE","STELLA-LYE":"CS2103T-W10-4 STEL..I YU","jocelyn-soh":"CS2103T-W10-4 SOH ..ELYN","tohlh":"CS2103T-W10-4 TOH ..HENG"}} diff --git a/archive.zip b/archive.zip index 408cbae7..3be006c0 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 7631726a..9ac241d8 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,42 +1,42 @@ -Mar 04, 2024 1:50:26 PM reposense.system.LogsManager addFileHandler +Mar 05, 2024 12:49:43 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Mar 04, 2024 1:50:26 PM reposense.parser.CsvParser validateHeader +Mar 05, 2024 12:49:43 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Mar 04, 2024 1:50:26 PM reposense.parser.RepoConfigCsvParser matchValueAndKeyword +Mar 05, 2024 12:49:43 AM reposense.parser.RepoConfigCsvParser matchValueAndKeyword WARNING: Ignoring unknown value 02a7620d1ed1d78c4ed314a67cf8c359a5a97dc5;ca7ce2d5c002a436dfccc9621a3de79fb140f5c5;92f90c348b0741617ace600a4e405bbe681dd795;d2fecfe583c1c351929ad4e6afc900bcc96f45d8;7e6624f484ea788645ed2d42d34fed57a06976a6;b524367f655bd758f95a7ac73e32c35b3d0219c5;66dcd0ed0a3f94a90b339936a8421aa03eb959e0;2c111e93c9140e523e532aba953f58457561867d;beae79deffcbbdef42f3222a0d937ff4f3961f40;f539c5095bde90a01fd591b0ad5c1d633f3c07b3;ce0abf71c5163b5c97539a960017c1cb7f524243;6376848908a5ab36696cc3b233ab1d4050a1a375;21de2ce55fcc9ffe1f188da7c67b05cbbcfef840;72cbb26bf7d664fdc845206ba97c62d5dc4b4c2b;a69eccecfb02e23360f2286bf626c5ddb08dc62d;360564cb5892ae1c758678718ae0b6ce27a0c8e3 in yes column. -Mar 04, 2024 1:50:26 PM reposense.parser.CsvParser validateHeader +Mar 05, 2024 12:49:43 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windofbitter found. The alias will belong to the last author - Windofbitter -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windofbitter found. The alias will belong to the last author - Windofbitter -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 04, 2024 1:50:26 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 05, 2024 12:49:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 04, 2024 1:50:26 PM reposense.parser.CsvParser validateHeader +Mar 05, 2024 12:49:43 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Mar 04, 2024 1:50:26 PM reposense.git.GitConfig getGlobalGitLfsConfig +Mar 05, 2024 12:49:43 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -52,1479 +52,1463 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... -Mar 04, 2024 1:50:26 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... -Mar 04, 2024 1:50:27 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git completed! -Mar 04, 2024 1:50:27 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-3/tp.git... -Mar 04, 2024 1:50:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... -Mar 04, 2024 1:50:27 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/92] Analyzing https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 04, 2024 1:50:27 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git to complete... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git to complete... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator analyzeRepos INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... +Mar 05, 2024 12:49:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 05, 2024 12:49:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! +Mar 05, 2024 12:49:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 04, 2024 1:50:28 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! -Mar 04, 2024 1:50:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! -Mar 04, 2024 1:50:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 04, 2024 1:50:29 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-1/tp.git... -Mar 04, 2024 1:50:29 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git to complete... -Mar 04, 2024 1:50:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-1/tp.git... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git to complete... -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 05, 2024 12:49:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 05, 2024 12:49:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-2/tp.git... -Mar 04, 2024 1:50:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 04, 2024 1:50:30 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... -Mar 04, 2024 1:50:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! -Mar 04, 2024 1:50:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... -Mar 04, 2024 1:50:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... -Mar 04, 2024 1:50:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 05, 2024 12:49:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! +Mar 05, 2024 12:49:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! -Mar 04, 2024 1:50:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 04, 2024 1:50:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 05, 2024 12:49:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... +Mar 05, 2024 12:49:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... +Mar 05, 2024 12:49:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 05, 2024 12:49:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 05, 2024 12:49:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-2/tp.git... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git to complete... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! -Mar 04, 2024 1:50:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 04, 2024 1:50:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-2/tp.git... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git to complete... -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-1/tp.git... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git to complete... -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 05, 2024 12:49:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! +Mar 05, 2024 12:49:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! -Mar 04, 2024 1:50:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 04, 2024 1:50:33 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 04, 2024 1:50:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! -Mar 04, 2024 1:50:35 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git to complete... -Mar 04, 2024 1:50:35 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 05, 2024 12:49:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! +Mar 05, 2024 12:49:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 05, 2024 12:49:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! +Mar 05, 2024 12:49:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! -Mar 04, 2024 1:50:35 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-1/tp.git... -Mar 04, 2024 1:50:35 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git to complete... -Mar 04, 2024 1:50:35 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 04, 2024 1:50:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git to complete... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... -Mar 04, 2024 1:50:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... +Mar 05, 2024 12:49:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 05, 2024 12:49:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-2/tp.git... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... +Mar 05, 2024 12:49:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... -Mar 04, 2024 1:50:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 04, 2024 1:50:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-4/tp.git... -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! -Mar 04, 2024 1:50:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-3/tp.git... -Mar 04, 2024 1:50:37 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git to complete... -Mar 04, 2024 1:50:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! -Mar 04, 2024 1:50:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-3/tp.git... -Mar 04, 2024 1:50:38 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! +Mar 05, 2024 12:49:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git to complete... -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 05, 2024 12:49:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 04, 2024 1:50:38 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-3/tp.git... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git to complete... -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-1/tp.git... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git to complete... -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... -Mar 04, 2024 1:50:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... -Mar 04, 2024 1:50:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! -Mar 04, 2024 1:50:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... +Mar 05, 2024 12:49:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 05, 2024 12:49:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-4/tp.git... -Mar 04, 2024 1:50:40 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git to complete... -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 04, 2024 1:50:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-4/tp.git... -Mar 04, 2024 1:50:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git to complete... -Mar 04, 2024 1:50:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! -Mar 04, 2024 1:50:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! +Mar 05, 2024 12:49:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-3/tp.git... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git to complete... -Mar 04, 2024 1:50:41 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "AY2324S2-CS2103-F08-4/tp[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/AY2324S2-CS2103-F08-4/tp.git' 'repos/AY2324S2-CS2103-F08-4_tp/tp_bare' on path . : -Cloning into bare repository 'repos/AY2324S2-CS2103-F08-4_tp/tp_bare'... -fatal: could not read Username for 'https://github.com': No such device or address - - at reposense.system.CommandRunnerProcess.waitForProcess(CommandRunnerProcess.java:46) - at reposense.report.RepoCloner.waitForCloneProcess(RepoCloner.java:323) - at reposense.report.RepoCloner.getClonedRepoLocation(RepoCloner.java:123) - at reposense.report.ReportGenerator.cloneRepo(ReportGenerator.java:263) - at reposense.report.ReportGenerator.lambda$cloneAndAnalyzeRepos$0(ReportGenerator.java:208) - at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) - at java.base/java.lang.Thread.run(Thread.java:829) - -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! +Mar 05, 2024 12:49:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-4/tp.git... -Mar 04, 2024 1:50:41 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git to complete... -Mar 04, 2024 1:50:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 04, 2024 1:50:41 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! -Mar 04, 2024 1:50:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 05, 2024 12:49:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-2/tp.git... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! +Mar 05, 2024 12:49:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-1/tp.git... -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:49:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-3/tp.git... -Mar 04, 2024 1:50:42 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git to complete... -Mar 04, 2024 1:50:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! +Mar 05, 2024 12:49:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... +Mar 05, 2024 12:49:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! -Mar 04, 2024 1:50:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... +Mar 05, 2024 12:49:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 04, 2024 1:50:43 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 05, 2024 12:49:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:49:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... +Mar 05, 2024 12:49:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... +Mar 05, 2024 12:49:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... +Mar 05, 2024 12:49:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 05, 2024 12:49:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... +Mar 05, 2024 12:49:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:49:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... -Mar 04, 2024 1:50:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! -Mar 04, 2024 1:50:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 04, 2024 1:50:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 04, 2024 1:50:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:49:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 04, 2024 1:50:45 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:49:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! -Mar 04, 2024 1:50:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! -Mar 04, 2024 1:50:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 04, 2024 1:50:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... -Mar 04, 2024 1:50:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... -Mar 04, 2024 1:50:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 04, 2024 1:50:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! -Mar 04, 2024 1:50:45 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 04, 2024 1:50:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:49:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! +Mar 05, 2024 12:50:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-1/tp.git... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git to complete... -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... +Mar 05, 2024 12:50:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-2/tp.git... -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 04, 2024 1:50:46 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git to complete... -Mar 04, 2024 1:50:46 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Mar 05, 2024 12:50:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! -Mar 04, 2024 1:50:47 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! -Mar 04, 2024 1:50:47 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... -Mar 04, 2024 1:50:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... -Mar 04, 2024 1:50:47 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 04, 2024 1:50:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git to complete... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git to complete... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 05, 2024 12:50:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... -Mar 04, 2024 1:50:48 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 04, 2024 1:50:48 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 05, 2024 12:50:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-2/tp.git... -Mar 04, 2024 1:50:49 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git to complete... -Mar 04, 2024 1:50:49 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 04, 2024 1:50:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! +Mar 05, 2024 12:50:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) completed! -Mar 04, 2024 1:50:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! -Mar 04, 2024 1:50:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! +Mar 05, 2024 12:50:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-3/tp.git... -Mar 04, 2024 1:50:50 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... -Mar 04, 2024 1:50:50 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 04, 2024 1:50:50 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! -Mar 04, 2024 1:50:51 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git completed! -Mar 04, 2024 1:50:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 04, 2024 1:50:51 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... -Mar 04, 2024 1:50:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... -Mar 04, 2024 1:50:51 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... +Mar 05, 2024 12:50:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 04, 2024 1:50:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 04, 2024 1:50:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 04, 2024 1:50:51 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 05, 2024 12:50:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! -Mar 04, 2024 1:50:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... -Mar 04, 2024 1:50:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... -Mar 04, 2024 1:50:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! -Mar 04, 2024 1:50:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... -Mar 04, 2024 1:50:53 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git to complete... -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 04, 2024 1:50:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 05, 2024 12:50:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! -Mar 04, 2024 1:50:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... -Mar 04, 2024 1:50:54 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 04, 2024 1:50:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 04, 2024 1:50:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 04, 2024 1:50:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! -Mar 04, 2024 1:50:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-2/tp.git... -Mar 04, 2024 1:50:54 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git to complete... -Mar 04, 2024 1:50:55 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... +Mar 05, 2024 12:50:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... +Mar 05, 2024 12:50:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 04, 2024 1:50:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! +Mar 05, 2024 12:50:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... +Mar 05, 2024 12:50:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 04, 2024 1:50:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 04, 2024 1:50:55 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) completed! -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! -Mar 04, 2024 1:50:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... -Mar 04, 2024 1:50:56 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... +Mar 05, 2024 12:50:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 04, 2024 1:50:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... +Mar 05, 2024 12:50:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... +Mar 05, 2024 12:50:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 05, 2024 12:50:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 04, 2024 1:50:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 04, 2024 1:50:56 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... -Mar 04, 2024 1:50:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 04, 2024 1:50:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... -Mar 04, 2024 1:50:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 04, 2024 1:50:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 04, 2024 1:50:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 04, 2024 1:50:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! -Mar 04, 2024 1:50:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! -Mar 04, 2024 1:50:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 04, 2024 1:50:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... -Mar 04, 2024 1:50:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... -Mar 04, 2024 1:50:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-4/tp.git... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-3/tp.git... -Mar 04, 2024 1:50:58 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 05, 2024 12:50:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git to complete... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 05, 2024 12:50:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 05, 2024 12:50:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 04, 2024 1:50:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! -Mar 04, 2024 1:50:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! -Mar 04, 2024 1:50:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 04, 2024 1:50:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... -Mar 04, 2024 1:50:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... -Mar 04, 2024 1:50:59 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:50:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 04, 2024 1:50:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 04, 2024 1:50:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 04, 2024 1:50:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! +Mar 05, 2024 12:50:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git completed! -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 05, 2024 12:50:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... +Mar 05, 2024 12:50:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-1/tp.git... -Mar 04, 2024 1:51:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... -Mar 04, 2024 1:51:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! -Mar 04, 2024 1:51:01 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! -Mar 04, 2024 1:51:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... -Mar 04, 2024 1:51:01 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... -Mar 04, 2024 1:51:01 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 04, 2024 1:51:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 05, 2024 12:50:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! -Mar 04, 2024 1:51:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! -Mar 04, 2024 1:51:02 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git to complete... -Mar 04, 2024 1:51:02 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git to complete... -Mar 04, 2024 1:51:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... +Mar 05, 2024 12:50:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... +Mar 05, 2024 12:50:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! +Mar 05, 2024 12:50:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git completed! -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... -Mar 04, 2024 1:51:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... -Mar 04, 2024 1:51:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git to complete... -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... -Mar 04, 2024 1:51:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... -Mar 04, 2024 1:51:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:50:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-1/tp.git... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 05, 2024 12:50:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "AY2324S2-CS2103T-F12-1/tp[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/AY2324S2-CS2103T-F12-1/tp.git' 'repos/AY2324S2-CS2103T-F12-1_tp/tp_bare' on path . : Cloning into bare repository 'repos/AY2324S2-CS2103T-F12-1_tp/tp_bare'... @@ -1540,179 +1524,193 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-3/tp.git... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... -Mar 04, 2024 1:51:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) completed! -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... -Mar 04, 2024 1:51:05 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... -Mar 04, 2024 1:51:05 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... -Mar 04, 2024 1:51:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator analyzeRepos +Mar 05, 2024 12:50:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... +Mar 05, 2024 12:50:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 05, 2024 12:50:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 04, 2024 1:51:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-1/tp.git... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git to complete... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! +Mar 05, 2024 12:50:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner spawnCloneProcess +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 05, 2024 12:50:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... -Mar 04, 2024 1:51:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. +Mar 05, 2024 12:50:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! -Mar 04, 2024 1:51:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 04, 2024 1:51:07 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! -Mar 04, 2024 1:51:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! -Mar 04, 2024 1:51:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! -Mar 04, 2024 1:51:08 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.RepoCloner waitForCloneProcess +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... +Mar 05, 2024 12:50:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator updateRepoConfig +Mar 05, 2024 12:50:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Mar 04, 2024 1:51:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 05, 2024 12:50:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) completed! -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 05, 2024 12:50:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 05, 2024 12:50:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator analyzeRepo +Mar 05, 2024 12:50:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) completed! -Mar 04, 2024 1:51:08 PM reposense.report.ReportGenerator generateReposReport +Mar 05, 2024 12:50:16 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Mar 04, 2024 1:51:09 PM reposense.RepoSense main -INFO: Elapsed processing time: 43.06 second(s) +Mar 05, 2024 12:50:16 AM reposense.RepoSense main +INFO: Elapsed processing time: 32.92 second(s) diff --git a/summary.json b/summary.json index f1ec4b20..81776264 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"bbb2f694a7","reportGeneratedTime":"Mon Mar 4 21:50:26 2024 UTC+08:00","reportGenerationTime":" 42.86 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[{"repoName":"AY2324S2-CS2103T-F12-1/tp[master]","errorMessage":"Failed to clone from https://github.com/AY2324S2-CS2103T-F12-1/tp.git"},{"repoName":"AY2324S2-CS2103-F08-4/tp[master]","errorMessage":"Failed to clone from https://github.com/AY2324S2-CS2103-F08-4/tp.git"}],"sinceDate":"2024-02-23","untilDate":"2024-03-04","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}} +{"repoSenseVersion":"bbb2f694a7","reportGeneratedTime":"Tue Mar 5 08:49:43 2024 UTC+08:00","reportGenerationTime":" 32.71 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[{"repoName":"AY2324S2-CS2103T-F12-1/tp[master]","errorMessage":"Failed to clone from https://github.com/AY2324S2-CS2103T-F12-1/tp.git"}],"sinceDate":"2024-02-23","untilDate":"2024-03-05","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}}}